2010-02-08 58 views
3

我解析網頁上找到的鏈接,和我正在尋找一種方式來URL轉換是這樣的:URL解析和簡化在PHP

http://www.site.com/./eng/.././disclaimer/index.htm 

等效和更正確的

http://www.site.com/disclaimer/index.htm 

主要是爲了避免重複。

謝謝。

回答

3

這樣

function simplify($path) { 
    $r = array(); 
    foreach(explode('/', $path) as $p) { 
     if($p == '..') 
     array_pop($r); 
     else if($p != '.' && strlen($p)) 
     $r[] = $p; 
    } 
    $r = implode('/', $r); 
    if($path[0] == '/') $r = "/$r"; 
    return $r; 
} 

,這是你如何使用它

$u = parse_url($dirtyUrl); 
$u['path'] = simplify($u['path']); 
$clean_url = "{$u['scheme']}://{$u['host']}{$u['path']}"; 
+0

工程! 不得不在閱讀您的代碼片段之前瞭解它是如何工作的:) 非常感謝。 – Omiod

+0

爲什麼「服務」代碼沒有包含到函數本身中? :-)我會想象函數,它作爲一個參數dirtyUrl並返回cleanUrl。 :-) – Radium

0

究竟是什麼讓你覺得這兩個網址是相同的?

如果您可以用詳細的方式回答此問題,請使用正則表達式或解析器來遵守您知道表示頁面等效的規則。

+0

,因爲它們導致相同的地址這兩個網址是等價的。 如果您在地址欄上輸入「髒」,瀏覽器會自動簡化它。 – Omiod