parse_url函数php

时间:2012-09-11 07:10:46

标签: php parsing url

我正在使用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

我怎么能避免这种情况?

2 个答案:

答案 0 :(得分:0)

您应该对url参数进行编码。

$tag->setAttribute('href', '/redirect.php?url='.urlencode($href));

然后在按parse_url获取数据后,使用urldecode对数据进行解码。

答案 1 :(得分:0)

您需要保存正在处理的网页的主机名。如果$url['host']为空,请在其位置使用该主机名。