我使用一个脚本来检测字符串中的url并用锚标记替换它:
$string = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i", "$1http://$2",$mytext);
$string = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<a target=\"_blank\" href=\"$1\">$1</a>",$string);
$string = preg_replace("/([\w-?&;#~=\.\/]+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?))/i","<a href=\"mailto:$1\">$1</a>",$string);
它工作正常,除非它遇到图像标记。例如:
<img src="http://www.xx.com/img.jpg" alt=""/>
将成为:
<img src="<a href="http://www.xx.com/img.jpg">http://www.xx.com/img.jpg</a>http://www.xx.com/img.jpg" alt=""/>
如果' src =“'就在它之前,我应该如何修改这个preg_replace以便不改变网址?
谢谢
答案 0 :(得分:0)
尝试在每个正则表达式结束时/
之前添加此权限:
(?<!\.(?:jpe?g|png|gif))
这应检查以确保最后一位(扩展部分)不是标准图像格式之一。