0

我目前有一个 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。

但是我不希望它检测到类似的东西:

“嘿。我喜欢这个网站”

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

我需要对我的正则表达式进行修改的任何想法!

谢谢,斯特凡

4

2 回答 2

2

在他们引入非拉丁网址之后,几乎不可能使用正则表达式来获得一个完全有效的过滤器。所以我会说它甚至不值得尝试使用正则表达式。怀疑 parse_url() 也支持它,但使用它意味着其他人必须解决非拉丁 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 过滤。

于 2010-05-09T15:33:18.773 回答
1

这是匹配提供的域区域列表的正则表达式:

[a-z0-9\-\.]+\.(com|co\.uk|net|org)
于 2010-05-09T15:54:04.580 回答