我目前有一个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。
但是我不希望它发现像:
“嘿。我爱这个网站”
这显然是从句号输入空格时的错误!
我需要抓住我的正则表达式的任何想法!
谢谢, 斯蒂芬
答案 0 :(得分:2)
在他们引入非拉丁语网址之后,几乎不可能使用正则表达式来获得完全有效的过滤器。所以我说它甚至不值得尝试使用正则表达式了。怀疑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)