我在PHP中创建了一个能够在字符串中链接url(仅限google.com
)的函数。网址类型为google.com
whitout协议http
,https
等,或www
;就像facebook.com
或twitter.com.uk
我确实创建了下一个函数,但是当url位于()或其他特殊字符旁边时,它会失败。
function linkify($tring){
$regex="/[^\W ]+[^\s]+[.]+[^\" ]+[^\W ]+/i";
return preg_replace("$regex", "<a href=\"http://\\0\" TARGET=_BLANK>\\0</a>",$string);
return $string;
}
例如函数失败(它考虑链接的括号部分):
google.com)sd
p(google.com
mn[google.com
[google.com]td
google.com}er
答案 0 :(得分:0)
您的正则表达式需要处理域扩展。 在维基百科上,您可以找到:https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains#Internationalized_country_code_top-level_domains
用它构建你的正则表达式。
答案 1 :(得分:0)
您可以使用checkdnsrr来查看它是链接还是文字
或者您可以使用[^\s]+[.][^\" ]*(test.com|domain.com)
这样的正则表达式,这样只允许替换test.com,domain.com或其子域名的链接