Finetune Regex跳过标签

时间:2012-08-14 18:54:05

标签: php regex preg-replace

代码必须跳过现有链接,<img>的src值(或类似的东西)

public function convertUrlsToLinks($text){
    return preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.-]*(\?\S+)?)?)?)@', '<a href="$1" target="_blank">$1</a>', $text);
}

无法弄清楚,我需要在此功能中修改什么?

1 个答案:

答案 0 :(得分:0)

在你的正则表达式中添加一小部分,检查你的正则表达式是否在标签内。所以它应该是

     <tag>HERE</tag> 

而不是

     <tag src="HERE"></tag>.

由于url将始终位于html标记内,因此如果您将正则表达式微调到此用途,它应该可以正常工作。我不是正则表达式的专业人士,所以不能帮助你,但我认为这应该让你朝着正确的方向前进。