10

+したがって、デコードするとURLからエンコードされたシンボルが返されるURLをエンコード/デコードしようとしています。たとえば、コード化すると、必要に応じwebsite.com/index.php?eq=1+12て が に+変換さ%2Bれます。から値を取得して$_REQUEST['eq']使用するurldecode()と、 as がエコーされ"1 12"ます。+いわばデコードを元に戻すことができないようです。ここで何か間違ったことをしていますか、それとももっと効率的/より良い方法がありますか? これが私が使用する正確なエンコード/デコード行です。

ページを送信

<?php
$eq = "1+12";
$send = '<a href="website.com/index.php?eq='.urlencode($eq).'</a>';
echo $send;

検索ページ

<?php
$eq = urldecode($_REQUEST['eq']);
echo $eq;
?>
4

3 に答える 3

20

実行しないでください。urldecodeデータ$_REQUESTは自動的にデコードされます。

URL のプラス記号は、エンコードされたスペースです。PHP は 16 進値を+自動的にデコードします。次に、 を介して結果を実行することによりurldecode、手動で (そして誤って) を にデコードし+ています。

于 2011-03-31T06:13:54.770 に答える
13

rawurldecode() 代わりに関数を使用してみてくださいurldecode()

于 2012-11-04T12:49:23.273 に答える
2

私はそれをJavaScriptでエンコードしencodeURIComponent()、PHPでrawurldecode()デコードします。「+」を含めて適切にエンコード/デコードしますurldecode()

于 2012-12-06T22:30:36.577 に答える