Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Detecting.com/.co.uk等_Php_Url_Preg Match_Detection - Fatal编程技术网

Php Detecting.com/.co.uk等

Php Detecting.com/.co.uk等,php,url,preg-match,detection,Php,Url,Preg Match,Detection,我目前有一个preg_匹配来检测http://和www.etc。。。。。但是我想从字符串中检测domain.com或domain.co.uk 示例字符串:“嘿,进展如何, 查看domain.com“我想 检测域.com 我想要的是检测这个字符串中的任何主要域,例如com.co.uk.eu等等。。。从example.com example2.co.uk表单中,然后返回true或false以进行处理。在这种情况下,它会找到domain.com 但是,我不希望它检测到以下情况: “嘿,我喜欢这个网站”

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

示例字符串:“嘿,进展如何, 查看domain.com“我想 检测域.com

我想要的是检测这个字符串中的任何主要域,例如com.co.uk.eu等等。。。从example.com example2.co.uk表单中,然后返回true或false以进行处理。在这种情况下,它会找到domain.com

但是,我不希望它检测到以下情况:

“嘿,我喜欢这个网站”

这显然是从句号开始键入空格时的错误

有什么想法我需要在我的正则表达式上重新整理一下

谢谢,
Stefan

在他们引入非拉丁URL之后,使用正则表达式获得完全工作的过滤器几乎是不可能的。所以我想说,在这里使用正则表达式已经不值得了。怀疑parse_url()是否也支持它,但使用它意味着其他人必须解决非拉丁url的问题,这总是一个额外的好处:)所以使用它吧

编辑: 好的,从一个字符串中,把它拆分成这样的单词


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

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

$array=explode(“,$string);
对于(int i=0;i

好的,parse_url()不应该这样使用,但据我所知,php中没有其他内置函数来进行url过滤。

在他们引入非拉丁url后,使用正则表达式来获得完全工作的过滤器几乎是不可能的。所以我想说,在这里使用正则表达式已经不值得了。怀疑parse_url()是否也支持它,但使用它意味着其他人必须解决非拉丁url的问题,这总是一个额外的好处:)所以使用它吧

编辑: 好的,从一个字符串中,把它拆分成这样的单词


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

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

$array=explode(“,$string);
对于(int i=0;i

好的,parse_url()不应该像这样使用,但据我所知,php中没有其他内置函数来进行url过滤。

下面是与提供的域区域列表相匹配的regexp:

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

以下是与提供的域区域列表相匹配的regexp:

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

@Stefan关于您的更新,即使您正在检测字符串中的url,我建议您获取整个内容,然后对其执行
parse_url()
(而不是使用正则表达式将url分隔为主机名、域、子域…)如果您确实需要正则表达式,为什么不添加一些你想从中提取的HTML示例呢?它将是类似于“Yeh i agreed google.com”的东西,然后检测google。com@Stefan啊,我明白了。我想这不是小事。你可以检测任何xxx.yyy组合,还是只检测有效域?@Pekka-Hmmm如果有人键入示例:“嘿,进展如何。我喜欢这个网站”,它会检测到它。。。对的在这种情况下,是的,检测所有已知的主要有效域,如.com的.co.uk.eu等将是理想的:)@Stefan我将删除我的答案,为新的答案扫清道路,但请在您的问题中添加一个更清晰的示例(本质上,我们在评论中的对话摘要),以便人们了解它的内容。@Stefan您的更新,即使您正在检测字符串中的url,如果您确实需要正则表达式,我建议您获取整个内容,然后对其执行
解析_url()
(而不是使用正则表达式将url分隔为主机名、域、子域…),为什么不添加一些你想从中提取的HTML示例呢?它将是类似于“Yeh i agreed google.com”的东西,然后检测google。com@Stefan啊,我明白了。我想这不是小事。你可以检测任何xxx.yyy组合,还是只检测有效域?@Pekka-Hmmm如果有人键入示例:“嘿,进展如何。我喜欢这个网站”,它会检测到它。。。对的那么在这种情况下,是的,检测所有已知的主要有效域,例如.com的.co.uk.eu等将是理想的:)@Stefan我将删除我的答案,以便为新的答案扫清道路,但请在您的问题中添加一个更清楚的示例(本质上,我们在评论中的对话摘要),以便人们理解它是关于什么的。