function makeLinksInTheContent($html)
{
$html= preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*)/is", "$1$2<a href=\"$3\" rel=\"nofollow\" >$3</a>", $html);
$html= preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*)/is", "$1$2<a href=\"http://$3\" rel=\"nofollow\" >$3</a>", $html);
$html= preg_replace("/(^|[\n ])([a-z0-9&\-_\.]+?)@([\w\-]+\.([\w\-\.]+)+)/i", "$1<a href=\"mailto:$2@$3\" rel=\"nofollow\">$2@$3</a>", $html);
return($html);
}
这是我的代码。
我需要自动链接网址。使用 preg_replace 查找 url 并设置指向该 url 的链接。
例如:“一个页面包含 www.google.com。” 如果我将此内容传递给 makeLinksInTheContent($html),它将返回“A page contains www.google.com ”。
但是以下 url 格式没有得到链接。
www.test.com()and[]&^%$#@!+|!@#$%^&()_+}{:"?><,./;'[]=-09~`。 co,in,com.com
http://www.test.com()and[]&^%$#@!+|!@#$%^&()_+}{:"?><,./;'[]=- 09~`.co,in,com.com
https://www.test.com()and[]&^%$#@!+|!@#$%^&()_+}{:"?><,./;'[]=- 09~`.co,in,com.com
ftp://www.test.com()and[]&^%$#@!+|!@#$%^&()_+}{:"?><,./;'[]=- 09~`.co,in,com.com
我认为我的正则表达式有一些错误。请建议我们。