我使用以下函数将文本链接转换为活动链接:
function makeClickableLinks($text) {
$text = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','<a href="\\1">\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1<a href="http://\\2">\\2</a>', $text);
$text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})','<a href="mailto:\\1">\\1</a>', $text);
return $text;
}
这很好用,但是如果已发布图片(img src =“http://www.yyy.com/zz.gif”),上面的代码也会尝试转换img的src - with没有什么好结果!
如何避免转换img标签的src的功能?
我找到了解决方案:
$text = preg_replace('/(?<!http:\/\/|https:\/\/|\"|=|\'|\'>|\">)(www\..*?)(\s|\Z|\.\Z|\.\s|\<|\>|,)/i',"<a href=\"http://$1\">$1</a>$2",$text);
$text = preg_replace('/(?<!\"|=|\'|\'>|\">|site:)(https?:\/\/(www){0,1}.*?)(\s|\Z|\.\Z|\.\s|\<|\>|,)/i',"<a href=\"$1\">$1</a>$3",$text);
echo "$text";
答案 0 :(得分:0)
你应该能够使用负面看法:
(?<!src=")
应排除img标记中的网址:
$text = preg_replace('#(?<!src=")(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~\#?&//=]+)#','<a href="\\1">\\1</a>', $text);