2012-03-09 22 views
1

私は、pathというURLという変数を持っています。PHP - str_replaceが期待どおりに機能しない

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

私は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がアップスローエラーを使用したとき、私はこれらを使用する際に、以前に行った作業します。

それは私が

+0

関数str_replaceには少なくとも3つの引数が必要です。したがって、str_replace( '%3F'、 '?');動作することはできませんが、私は、他のstr_replaceが動作していない理由はわかりません。 –

+0

これは私には役に立ちますが、どのようなエラーが表示されますか? –

+0

あなたの例は不完全であるか間違っています。再現できません:http://codepad.org/AubDoGw4 - '$ path'には本当に*が入っているかを再確認してください。 - エラーが発生したために質問をした場合は、エラーを指定してください。 – hakre

答えて

8

このためstr_replace()を使用しないでください行方不明ですというシンプルなものかもしれので、私は、PHPに非常に新しいです。代わりにurldecode()を使用してください。これは設計された目的です。

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

あなたのコードの残りの部分を見ることなく、あなたの最初の2つのstr_replace()の呼び出しが失敗した理由を言うのは難しいです。彼らは正しく形成されています。

+0

そのマイケルに感謝します。残念ながら、それはまだ動作していませんが、私はそれがこの質問の範囲を超えていると思います。あなたは間違いなくstr_replaceを使って私のロジックに欠陥を示しました! – Undefined

0

であるべき:あなたは最後の2行のために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); 
関連する問題