0

我正在使用 php 的 parse_url 从我的 urls 内容中提取 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

我怎么能避免这种情况?

4

2 回答 2

0

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

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

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

于 2012-09-11T07:14:10.537 回答
0

您需要保存正在处理的页面的主机名。如果$url['host']为空,则使用该主机名代替它。

于 2012-09-11T07:22:38.773 回答