2012-03-09 224 views
1

我有一個名爲路徑的變量,PHP - str_replace不按預期方式工作

www.google.co.uk%3Fq%3Dde 

我正在運行2 str_replace格式正確。

$path = str_replace('%3F', '?', $path); 
    $path = str_replace ('%3D', '=', $path); 

我然後打印輸出,但 「%3F」 和 「%3D」 仍然被打印。這做了以前的工作,當我用這些2 str_replace

$path = str_replace('%3F', '?'); 
    $path = str_replace ('%3D', '='); 

但drupal 6拋出錯誤,當我使用這些。

我很新的PHP所以這可能是一些簡單的,我很想念

+0

函數str_replace至少需要3個參數。所以str_replace('%3F','?');不能工作,但我不知道,爲什麼其他str_replace不工作。 – 2012-03-09 12:03:28

+0

這適用於我,你看到什麼錯誤? – 2012-03-09 12:03:51

+0

你的例子是不完整的/錯誤的,無法重現,請參閱:http://codepad.org/AubDoGw4 - 仔細檢查'$ path'包含* really *。 - 如果您因爲出錯而提出問題,請指明錯誤。 – hakre 2012-03-09 12:11:25

回答

8

不要使用str_replace()這一點。改爲使用urldecode(),因爲這是它的設計目的。

echo urldecode("www.google.co.uk%3Fq%3Dde"); 
// www.google.co.uk?q=de 

沒有看到你的代碼的其餘部分,這是很難說爲什麼你的前兩個str_replace()呼叫失敗。他們正確地形成。

+0

感謝那個邁克爾,不幸的是它仍然沒有工作,但我認爲這超出了這個問題的範圍。你已經明確地表明瞭我的邏輯中使用str_replace的缺陷! – Undefined 2012-03-09 12:09:21

0

應該是:你缺少$路徑str_replace函數的最後兩行:

 

$path = "www.google.co.uk%3Fq%3Dde"; 
$path = str_replace('%3F', '?', $path); 
$path = str_replace ('%3D', '=', $path); 
 
0

使用PHP的urldecode功能。

$url = "www.google.co.uk%3Fq%3Dde"; 
    $path = urldecode($url);