我发现很多函数在顶部回答了我的问题,但是大多数函数都有问题。到目前为止我发现的最好的就是这个
//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函数不太好。