【问题标题】:Get Host name from given URL从给定的 URL 获取主机名
【发布时间】:2015-11-16 08:51:02
【问题描述】:

如何从下面的示例中获取主机名。

我/P:https://stackoverflow.com/users/login | O/P:stackoverflow.com

I/P:stackoverflow.com/users/login | O/P:stackoverflow.com

I/P: /users/login | O/P:(返回空字符串)

我检查了 parse_url 函数,但没有返回我需要的。因为,我是 PHP 的初学者,所以对我来说很难。如果您有任何想法,请回答。

【问题讨论】:

  • 您需要创建自己的自定义 url 解析器。
  • 谢谢巴巴克。我已经尽力了。但没有得到正确的输出。请任何人给我适当的功能!
  • 您是否尝试过:$_SERVER["HTTP_HOST"]$_SERVER["SERVER_NAME"] 但返回服务器名称

标签: php url html-parsing url-parsing urlparse


【解决方案1】:

这应该适用于所有类型的域名

$url = " https://stackoverflow.com/users/login";
// trailing slash for edge case, it will return empty string for strstr function regardless
$test = str_replace(array("http://", "https://"), "", $url) . "/";
$domain = strstr($test, "/", true);
echo $domain; // stackoverflow.com

如果没有找到域,$domain 将是一个空字符串

【讨论】:

    【解决方案2】:

    你可以试试这个

    <?php  
    
    function getHost($Address) { 
       $parseUrl = parse_url(trim($Address)); 
       return trim(isset($parseUrl['host']) ? $parseUrl['host'] : array_shift(explode('/', $parseUrl['path'], 2))); 
    } 
    
    echo getHost('http://stackoverflow.com/users/login');
    

    【讨论】:

      【解决方案3】:

      你可以试试这个——

      $url = ' https://stackoverflow.com/users/login';
      
      function return_host($url)
      {
        $url = str_replace(array('http://', 'https://'), '', $url); // remove protocol if present
        $temp = explode('/', $url); // explode the url by /
        if(strpos($temp[0], '.com')) { // check the url part
           return $temp[0];
        }
        else {
           return false;
        }
      }
      
      echo return_host($url);
      

      更新

      对于其他域类型只需更改检查 -

      if(strpos($temp[0], '.com') || strpos($temp[0], '.org') || strpos($temp[0], '.net'))
      

      DEMO

      【讨论】:

      • @SanKaRan 为此,您只需更改支票即可。
      • 是的。现在是k。百万坦克@karan
      【解决方案4】:

      您可以使用正则表达式,如此解决方案中所述:Getting parts of a URL (Regex)

      或者您可以为此使用 PHP 函数:http://php.net/manual/en/function.parse-url.php

      我建议第二个(如果您不知道它们的确切工作原理,RegEx 可能会很棘手)。

      【讨论】:

      • 我已经尝试过 parse-url。但是从这个内置函数中,我没有得到正确的输出。
      • 你能粘贴你的代码吗?我知道它有效,所以那里可能有问题......
      猜你喜欢
      • 2013-10-24
      • 2012-03-26
      • 2012-03-25
      • 2011-11-05
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      相关资源
      最近更新 更多