Php 微调正则表达式以跳过标记

Php 微调正则表达式以跳过标记,php,regex,preg-replace,Php,Regex,Preg Replace,代码必须跳过现有链接, public function convertUrlsToLinks($text){ return preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.-]*(\?\S+)?)?)?)@', '<a href="$1" target="_blank">$1</a>', $text); } 公共函数convertUrlsToLinks($text){ 返回preg\u replace(“

代码必须跳过现有链接,
public function convertUrlsToLinks($text){
    return preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.-]*(\?\S+)?)?)?)@', '<a href="$1" target="_blank">$1</a>', $text);
}
公共函数convertUrlsToLinks($text){
返回preg\u replace(“@(https?:/([-\w\.]+)+(:\d+)(/([\w/\.-]*(\?\S+))”,“,$text);
}

不知道这个函数需要修改什么?

在正则表达式中添加一小部分,检查正则表达式是否“在”标记中。应该如此

     <tag>HERE</tag> 
这里
而不是

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

由于url将始终位于html标记内,因此如果您将正则表达式微调为这种用法,它应该可以工作。我不是regex'的专业人士,所以我只能帮你这么多,但我认为这应该会让你走上正确的方向。

除非你需要使用正则表达式,否则你可以使用正则表达式。PHP简单的HTMLDOM解析器,并以明文形式获取带有
标记的所有内容。(可能)复制