parse_url默认为path而不是host

时间:2015-09-22 19:07:16

标签: php

为什么parse_url默认情况下会将域信息放在path中,而不是放在host中?

例如:

$url = 'www.example.com';
$parsed_url = parse_url($url);

如果我在$ parsed_url上执行var_dump,我会得到:

array (size=1)
    'path' => string 'www.example.com' (length=15)

默认情况下,不应该在host?如果我将http://添加到$ url中的值,它会按预期分发信息。

1 个答案:

答案 0 :(得分:3)

根据定义,URL必须包含http://等协议/方案。

  

也接受部分网址,parse_url()尽力进行解析   他们是正确的。

请尝试检查http://,如果没有,请添加:

$url = strpos($url, 'http://') !== 0 ? "http://$url" : $url;

您可能还需要检查https://,以便进行两次检查或正则表达式是否有效:

$url = preg_match('#^https?://#') ? $url : "http://$url";