Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 如何比较URL字符串中的两个域名?_Php_Regex - Fatal编程技术网

Php 如何比较URL字符串中的两个域名?

Php 如何比较URL字符串中的两个域名?,php,regex,Php,Regex,如果我有两条线 $first = 'http://www.example.com'; $second = 'www.example.com/'; 我怎样才能确定它们是否匹配?我只关心示例部分是否匹配。我在想某种形式的正则表达式模式会匹配,但我完全搞不懂。如果您试图评估结构化数据,请不要使用正则表达式。正则表达式并不是一根魔杖,你在遇到每一个涉及字符串的问题时都会挥舞它。如果你有一个像http://www.some-other-domain.com/blah/blah/?www.example.

如果我有两条线

$first = 'http://www.example.com';
$second = 'www.example.com/';

我怎样才能确定它们是否匹配?我只关心
示例
部分是否匹配。我在想某种形式的正则表达式模式会匹配,但我完全搞不懂。如果您试图评估结构化数据,请不要使用正则表达式。正则表达式并不是一根魔杖,你在遇到每一个涉及字符串的问题时都会挥舞它。如果你有一个像
http://www.some-other-domain.com/blah/blah/?www.example.com

如果您试图将一个域名与一个域名进行匹配,则将URL拆分以获取主机并进行比较。在PHP中,使用函数。这将为您提供
www.example.com
作为主机名,然后您可以比较它以确保它是您期望的主机名。

试试这个

function DomainUrl($x) {
   $url = $x;
   if ( substr($url, 0, 7) == 'http://') { $url = substr($url, 7); }
   if ( substr($url, 0, 8) == 'https://') { $url = substr($url, 8); }
   if ( substr($url, 0, 4) == 'www.') { $url = substr($url, 4); }
   if ( substr($url, 0, 4) == 'www9.') { $url = substr($url, 4); }
   if ( strpos($url, '/') !== false) {
      $ex = explode('/', $url);
      $url = $ex['0'];
   }

      return $url;
}

$first = DomainUrl('http://www.example.com');
$second = DomainUrl('www.example.com/');

if($first == $second){
echo 'Match';
}else{
echo 'Not Match';

}

对于第一个URL,
parse_URL()
将给出
host
作为
www.example.com
。对于第二个,它将给出
path
作为
www.example.com/
。你不能直接比较它们。我从他的问题推断OP不想解析第二个URL。他只是想确保URL的主机名为www.example.com。“我如何确定它们是否匹配?”-我想OP希望比较两个URL,并检查
example.com
部分是否匹配。没错。他希望确保URL中的主机名与example.com匹配。这就是为什么他想解析URL,只给他主机名,然后进行比较。URL是结构化数据,将结构化数据作为字符串处理会让人头疼。我不确定,但我认为OP正在尝试检查
$first
中的域部分是否与
$second
中的域部分匹配
parse_url()
确实是正确的方法,但我不确定如何真正比较它们?(即,考虑像本例中那样的额外斜杠)如果URL是
www9.ccni.cl
?那么
wwww1
www2
www999
等呢?@AmalMurali您可以根据需要编辑函数。因此,为每种可能的情况添加一个if块?我认为这是一个非常糟糕的方法。这只是一个旁白,我不是反对者。有一个更简单的解决方案,叫做parse_url()