我正在使用php的parse_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);
}
如果你的['host']包含顶级域名,这可以正常工作。如果url ['host']是一个相对路径而不是一个大混乱。
/redirect.php?url=/example/test
我怎么能避免这种情况?
答案 0 :(得分:0)
您应该对url参数进行编码。
$tag->setAttribute('href', '/redirect.php?url='.urlencode($href));
然后在按parse_url
获取数据后,使用urldecode对数据进行解码。
答案 1 :(得分:0)
您需要保存正在处理的网页的主机名。如果$url['host']
为空,请在其位置使用该主机名。