Typecho Markdown内图片正则引发的思考

罗格罗格 技术文档 24天前 (2018-02-07) 1266 次浏览 4 次评论

污句子网站 你好污啊 上线以后,我几乎每天都会去做一波推广,空余时间又折腾了一个专注于韩国电影的网站,为了方便后期挂广告并将页面PV升高,在中间做了点小技巧,把视频播放和下载页面单独拎出来放在了独立页面里,这样后期广告维护起来也就简单很多了。遇到的问题是提取Typecho的编辑器Markdown中的图片,但是问题来了,平时我们可以将正则函数直接写在function.php里,前端调用function.php的时候,Markdown内容已经被解析成了Html格式,如果用户直接从数据库中取出来数据再去用function中的正则函数就无法匹配出文章内容中的图片,所以解决办法就是直接在Markdown内容中使用正则语句。

要加删除线的内容

测试拼音拼音 (pin yin)

==要高亮显示的内容==

下面我们来看看原生Markdown和Html中正则语句的区别:

$pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i';  //正则Html中的img标签中的图片地址
$patternMD = '/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|png))/i'; //正则内联Markdown内容中的图片地址
$patternMDfoot = '/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|png))/i'; //正则脚部/脚注式Markdown内容中的图片地址

其中第一条正则就不用我解释了,大家经常在function.php函数中能见得到,第二句正则语句是内联Markdown内容中的图片地址,这个怎么理解呢,如果没接触过的小伙伴一定很纠结这句和第三句脚部式正则有什么区别?来让我给大家解释一下:

Markdown内联式图片编写方式为:

这是一段很长的内容,我是一张图片
我要换行
我要换行
![我是图片描述](https://www.moidea.info/upload/images/1.jpg),内容继续,下面还有很多内容。
我要换行
我要换行

Markdown脚部式图片编写方式为:

这是一段很长的内容,我是一张图片![我是图片描述][3] ,内容继续,下面还有很多内容。
我要换行
我要换行
我要换行
我要换行
[1]: https://www.moidea.info/upload/images/1.jpg

经过上面的对比大家应该能理解Markdown内联和脚注式的图片调用了,其实内联和脚注最大的区别就是图片资源网址和图片描述的位置

  • 本文作者:罗格
  • 本文链接:https://www.moidea.info/archives/456.html
  • 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!
  • 客官,说两句吧!

    已有 4 条评论

    1. 林洋洋

      广告真的无处不在啊,哈哈哈

    2. 泽泽

      这个评论框莫名眼熟哈哈哈哈

      1. 罗格
        罗格 管理员 收录情况
        回复

        @泽泽 哈哈哈,让你发现了,就是从你那里抄来的

    3. zhangyw

      广告太多了