2
我使用下面的函数将文本链接转换为活动链接:将文本转换为链接 - 忽略图像的src
function makeClickableLinks($text) {
$text = eregi_replace('(((f|ht){1}tp://)[[email protected]:%_\+.~#?&//=]+)','<a href="\\1">\\1</a>', $text);
$text = eregi_replace('([[:space:]()[{}])(www.[[email protected]:%_\+.~#?&//=]+)','\\1<a href="http://\\2">\\2</a>', $text);
$text = eregi_replace('([_\.0-9a-z-][email protected]([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 - 没有很好的结果!
如何避免转换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";
请注意,不建议使用'ereg_ *'系列函数。您应该使用'preg_ *'家族。 – Sarfraz 2012-02-23 12:16:07
谢谢 - 显然是我正在使用的一个旧脚本:) – Christoffer 2012-02-23 12:17:02
@zvinx,如果您的解决方案可以工作,然后将其作为答案! – 2012-02-23 12:53:24