为什么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中的值,它会按预期分发信息。
答案 0 :(得分:3)
根据定义,URL必须包含http://
等协议/方案。
也接受部分网址,parse_url()尽力进行解析 他们是正确的。
请尝试检查http://
,如果没有,请添加:
$url = strpos($url, 'http://') !== 0 ? "http://$url" : $url;
您可能还需要检查https://
,以便进行两次检查或正则表达式是否有效:
$url = preg_match('#^https?://#') ? $url : "http://$url";