【问题标题】:php check if domain equals value, then perform actionphp 检查域是否等于值,然后执行操作
【发布时间】:2010-11-10 11:18:59
【问题描述】:

我需要获取一个包含 URL 的变量,并检查该域是否等于某个域,如果是,则回显一个变量,如果不是,则回显另一个。

$domain = "http://www.google.com/docs";
if ($domain == google.com)
{ echo "yes"; }
else
{ echo "no"; }

我不确定如何编写第二行来检查域以查看 $domain 是否包含 if 语句中的 url。

【问题讨论】:

    标签: php


    【解决方案1】:

    这是通过使用parse_url:

    $host = parse_url($domain, PHP_URL_HOST);
    if($host == 'www.google.com') {
        // do something
    }
    

    【讨论】:

    • 您可能需要更强大的域检查,如 Jonathan Sampson 的回答中所述。
    • 自制的正则表达式如何比内置的 PHP 更健壮?
    【解决方案2】:

    稍微高级的域名查找功能。

    $address = "http://www.google.com/apis/jquery";
    
    if (get_domain($address) == "google.com") {
      print "Yes.";
    }
    
    function get_domain($url)
    {
        $pieces = parse_url($url);
        $domain = isset($pieces['host']) ? $pieces['host'] : '';
        if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
            return $regs['domain'];
        }
        return false;
    }
    

    【讨论】:

      【解决方案3】:

      除了其他答案之外,您还可以使用正则表达式,例如在域名中查找 google.com 的正则表达式

      $domain = "http://www.google.com/docs";
      if (preg_match('{^http://[\w\.]*google.com/}i', $domain))
      {
      
      }
      

      【讨论】:

      • 是的,我没看到你在那里尝试什么。
      【解决方案4】:

      你试过@987654321@()吗?

      请注意,您可能还想在'.' 上explode() 生成的域,具体取决于您所说的“域”。

      【讨论】:

        【解决方案5】:

        您可以使用parse_url function 将 URL 分成单独的部分(协议/主机/路径/查询字符串/等)。如果您还想让 www.google.com 成为 google.com 的同义词,则需要添加额外的子字符串检查(使用 substr),以确保主机的后半部分与您所在的域匹配正在寻找。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-23
          • 2012-10-03
          • 2011-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-20
          • 1970-01-01
          相关资源
          最近更新 更多