将域名从字符串替换为链接php

时间:2016-05-27 15:29:14

标签: php regex

我在PHP中创建了一个能够在字符串中链接url(仅限google.com)的函数。网址类型为google.com whitout协议httphttps等,或www;就像facebook.comtwitter.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

2 个答案:

答案 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或其子域名的链接