PHP preg用html href替换字符串中的url

时间:2016-07-20 11:22:04

标签: php preg-replace

我发现很多函数在顶部回答了我的问题,但是大多数函数都有问题。到目前为止我发现的最好的就是这个

//Replace links with http://
$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" class=\"chatlink\" target=\"_blank\" rel=\"nofollow\">\\2</a>", $ret);

//Replace links without http://
$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" class=\"chatlink\" target=\"_blank\" rel=\"nofollow\">\\2</a>", $ret);

问题是,如果它位于文本的中间,则不会替换url。例如,它不会替换字符串中的文本:

“小文字http://www.google.com,以及更多文字。” 如果链接不在文本的中间,但在新行中,它可以正常工作。

其次我需要确保,如果在字符串中已经是html href链接,那么它不会再次替换url。

<a href="http://google.com">http://google.com</a>

<a href="<a href="http://google.com">http://google.com</a>"></a>

那就是它。如果有人可以帮助我会很棒,我对preg_replace函数不太好。

0 个答案:

没有答案