2012-09-11 29 views
0

我使用php的parse_url從我的url內容中提取tld。 比我有頂級域的數組,如果它們匹配或不匹配,則與提取的頂級域進行比較。parse_url函數php

$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 

我怎麼能避免這種情況?

回答

0

您需要保存正在處理的頁面的主機名。如果$url['host']爲空,請使用該主機名。

+0

好吧聽起來不錯我要試一試 – kakuki

0

您應該對url參數進行編碼。

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

然後通過parse_url獲取數據後,使用urldecode對數據進行解碼。