伏雨朝寒悉不胜,那能还傍杏花行。去年高摘斗轻盈。漫惹炉烟双袖紫,空将酒晕一衫青。人间何处问多情。 ———— 纳兰容若
昨天发的那篇三合一教程后来发现灯箱效果用正则处理以后就没有alt标签内容了网上找了很久也没找到全都是匹配src的费了好大功夫才找到一个完善可以用的在博客记录一下
$imgRegex='/<\s*img[\s\S]+?(?:src=[\'"]([\S\s]*?)[\'"]\s*|alt=[\'"]([\S\s]*?)[\'"]\s*|[a-z]+=[\'"][\S\s]*?[\'"]\s*)+[\s\S]*?>/i';
// 这里最重要的就是中间括号的非捕获部分。
// (?:src=[\'"]([\S\s]*?)[\'"]\s*|alt=[\'"]([\S\s]*?)[\'"]\s*|[a-z]+=[\'"][\S\s]*?[\'"]\s*)+
// 将src alt 列出来,同时将其他可能的属性也作为匹配
// src=[\'"]([\S\s]*?)[\'"]\s*
// alt=[\'"]([\S\s]*?)[\'"]\s*
// [a-z]+=[\'"][\S\s]*?[\'"]\s*
原文地址:https://vsmvc.com/p_5dd039a643cbed66c215e9e1
下面在Typecho上使用方法
独立版:
function parseContent($obj){
$options = Typecho_Widget::widget('Widget_Options');
$obj->content = preg_replace('/<\s*img[\s\S]+?(?:src=[\'"]([\S\s]*?)[\'"]\s*|alt=[\'"]([\S\s]*?)[\'"]\s*|[a-z]+=[\'"][\S\s]*?[\'"]\s*)+[\s\S]*?>/i','<a href="$1" data-title="$2" data-lightbox="roadtrip" /><img alt="$2" src="$1"></a>',$obj->content);
echo trim($obj->content);
}
三合一版:
function parseContent($obj){
$options = Typecho_Widget::widget('Widget_Options');
$patterns = array ('/<a href=\"([^\"]*)\">/i','/<\s*img[\s\S]+?(?:src=[\'"]([\S\s]*?)[\'"]\s*|alt=[\'"]([\S\s]*?)[\'"]\s*|[a-z]+=[\'"][\S\s]*?[\'"]\s*)+[\s\S]*?>/i','#\@\((.*?)\)#');
$replace = array ('<a href="\\1" target="_blank" class="post-diy" rel="nofollow">','<a href="$1" data-title="$2" data-lightbox="roadtrip" /><img alt="$2" src="$1"></a>','<img src="https://cdn.jsdelivr.net/gh/Seevil/R/G/IMG/bq/$1.png" class="bq">');
$obj->content = preg_replace('/<\s*img[\s\S]+?(?:src=[\'"]([\S\s]*?)[\'"]\s*|alt=[\'"]([\S\s]*?)[\'"]\s*|[a-z]+=[\'"][\S\s]*?[\'"]\s*)+[\s\S]*?>/i','<a href="$1" data-title="$2" data-lightbox="roadtrip" /><img alt="$2" src="$1"></a>',$obj->content);
echo trim($obj->content);
}
输出:
<?php parseContent($this); ?>
效果预览:
完美解决🎈
夏目贵志2021-01-26 16:58
https://img.gejiba.com/images/5d2312f40e80291902c78da89a74736b.png
我当初是这么搞的
夏目贵志2021-01-27 17:55
怎么找不到 回复你的地方
我今天也换 你这个版本了 很强 哈哈!!
Intern MOD2021-01-30 22:07
我把评论层级设置为2层了,刚刚改了下改为3层。
Intern MOD2021-01-26 17:00
https://www.krsay.com/typecho/typecho-code-posturl-img-bq.html
😃我之前也用的是这个方法~