0

phpのparse_urlを使用してURLコンテンツからTLDを抽出しています。抽出されたトップレベルドメインと一致するかどうかを比較するトップレベルドメインの配列があります。

  $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['host']、そのホスト名を代わりに使用します。

于 2012-09-11T07:22:38.773 に答える
0

URL パラメータをエンコードする必要があります。

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

そして、 でデータを取得したら、 urldecodeparse_urlを使用してデータをデコードします。

于 2012-09-11T07:14:10.537 に答える