PHP:通过URL获取外部网站的主机名(确定主机名是否包括www';)

PHP:通过URL获取外部网站的主机名(确定主机名是否包括www';),php,web,hostname,Php,Web,Hostname,假设我有一个指向外部网站的URL,比如`https://www.test.com“或者”https://test.com,但我不确定外部网站的主机名是否包含“www”。我如何使用PHP确定这一点?您想调用URL并检查状态标题。Curl做得很好。这样的办法应该行得通 $url = "https://test.com"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch,

假设我有一个指向外部网站的URL,比如`https://www.test.com“或者”https://test.com,但我不确定外部网站的主机名是否包含“www”。我如何使用PHP确定这一点?

您想调用URL并检查状态标题。Curl做得很好。这样的办法应该行得通

$url = "https://test.com";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY,  true);
curl_setopt($ch, FOLLOW_LOCATION, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_exec($ch);

$returnCode = curl_getinfo($ch,CURLINFO_HTTP_CODE); //200 = success, 4xx/5xx = error
if ($returnCode === 200) { //The url resolved and loaded
   //Do Stuff Here
} else if($returnCode === 301) { //The url resolved but forwarded to a different url        
    $effectiveURL = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); //The effective URL will be the final url in the chain (e.g. if www.test.com forwarded to test.com)
}
curl_close($ch);

该代码段将检查URL是否存在并且是否可以成功解析。它还将考虑域转发到另一个域的情况。您肯定需要用更多的检查/逻辑(查看
FILTER\u VALIDATE\u URL
)来包装它,但这应该让您开始了解这个概念。您可能还需要调整超时值以适应您的用例的具体情况。

在50种左右的方法中,您是否尝试过任何方法?我在谷歌上搜索了30分钟,但到目前为止,我没有找到任何方法。每个人似乎都假设知道正确的URL。你是想实际调用URL以查看它是否有效,还是只想知道字符串是否包含“www”?@我需要调用URL,否则我将无法知道真正的主机名。这就是我挣扎的地方。太棒了,正是我想要的。非常感谢你!嗯,我不知道为什么,但这个网站不起作用:
https://www.planet-meat.de
。到目前为止,我试过的所有其他方法都有效。这是b/c,有一个重定向。编辑我的答案来修复它。嗯,这很奇怪,我正在我的本地机器上测试这个,我没有得到301,但是提到的url得到403,所有其他的都可以。奇怪,当我从控制台手动卷曲它时,我肯定得到301。