[英]parse_url function php
我正在使用php的parse_url从URL内容中提取tlds。 我有一个顶级域数组,如果匹配或不匹配,则将它们与提取的顶级域进行比较。
$url = parse_url($tag->getAttribute('href'));
if (in_array($url['host'], $affi_urls) || $url['host'] == "www.example.com"){
$tag->setAttribute('href', '/redirect.php?url='.$href);
}
如果ur ['host']包含顶级域,则可以正常工作。 如果url ['host']是一个相对路径,那么那儿是一个很大的混乱。
/redirect.php?url=/example/test
我如何避免这种情况?
您应该对url参数进行编码。
$tag->setAttribute('href', '/redirect.php?url='.urlencode($href));
然后通过parse_url
获取数据后,使用urldecode解码数据。
您需要保存正在处理的页面的主机名。 如果$url['host']
为空,请使用该主机名代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.