Regex 使用正则表达式查找文本中的链接

Regex 使用正则表达式查找文本中的链接,regex,Regex,已经有好几篇关于查找文本链接的帖子,但没有一篇完全适用于我的情况。 这一个离我越近: $reg_exUrl = "#(https?|ftp)://\S+[^\s.,>)\];'\"!?]#"; preg_match_all( $reg_exUrl, $content, $result ); 除以下内容外,这几乎适用于所有情况: $content = '<p><br></p><p>https://www.google.c

已经有好几篇关于查找文本链接的帖子,但没有一篇完全适用于我的情况。 这一个离我越近:

    $reg_exUrl = "#(https?|ftp)://\S+[^\s.,>)\];'\"!?]#";   
    preg_match_all( $reg_exUrl, $content, $result );
除以下内容外,这几乎适用于所有情况:

$content = '<p><br></p><p>https://www.google.com <br></p><p>http://localhost/index.php?view=model&nbsp;<br></p><p><br></p><p>http://localhost/index.php?view=scheduler/ <br></p><p><br></p><p>http://localhost/index.php?view=module<br></p><p><br></p><p><br></p>';
如果链接后面没有空格,则preg_match_all将链接后面的HTML作为链接的一部分


如何修改正则表达式,使其在有HTML标记时停止?

您可以使用下面的正则表达式查找上述字符串中的链接

(https?|ftp)://.*?(?=&nbsp|\s|<|>)