检测.com / .co.uk等

时间:2010-05-09 15:07:18

标签: php url preg-match detection

我目前有一个preg_match来检测http://和www。等.....但我想从字符串中检测domain.com或domain.co.uk

  

示例字符串:“嘿,它发生了,   看看domain.com“我想要   检测domain.com

我想要的是从example.com example2.co.uk的形式检测此字符串中的任何主要域,即.com .co.uk .eu等...然后返回true或false来处理它。在这种情况下,它会找到domain.com。

但是我不希望它发现像:

  

“嘿。我爱这个网站”

这显然是从句号输入空格时的错误!

我需要抓住我的正则表达式的任何想法!

谢谢, 斯蒂芬

2 个答案:

答案 0 :(得分:2)

在他们引入非拉丁语网址之后,几乎不可能使用正则表达式来获得完全有效的过滤器。所以我说它甚至不值得尝试使用正则表达式了。怀疑parse_url()也支持它,但使用它意味着其他人必须解决非拉丁网址的问题,这总是一个奖励:)所以使用

http://au.php.net/parse_url

http://thenextweb.com/me/2010/05/06/monumental-day-internet-nonlatin-domain-names-live/

编辑: 好吧,从一个字符串,将其拆分为像这样的单词


$array = explode(" ", $string);

for(int i = 0; i < count($array);i++)
{
  if(parse_url($array[i]) != false)
  {
    $url[] = $array[i];
  }
}

好的,parse_url()不应该像这样使用,但是根据我的意见,没有内置到php中的其他功能来进行URL过滤。

答案 1 :(得分:1)

以下是与提供的域名列表匹配的正则表达式:

[a-z0-9\-\.]+\.(com|co\.uk|net|org)