0

そのため、POST 経由で HTML 文字列を PHP に送信する簡単なスクリプトを作成しています。それをエコーアウトしようとすると、奇妙な文字でエンコードされます。

送信している文字列:

'Yo <i>whats up</i>'

PHPでエコーアウトすると得られるもの

Yo+%3Ci%3Ewhats+up%3C%2Fi%3E 

ここで何が起こっているのですか?元の HTML 文字列に戻すために使用できる PHP メソッドはありますか?

4

2 に答える 2

2

使いたい

echo htmlspecialchars(urldecode('Yo+%3Ci%3Ewhats+up%3C%2Fi%3E'));

その理由は、データが投稿用にx-www-form-urlencodedされるためです。したがって、サーバー側では、再度デコードする必要があります。これがurldecode()の機能です。

htmlspecialchars()は、HTMLタグがそのようにレンダリングされないようにするため、文字列として表示されるだけです(必要な場合)。

したがって、HTMLコンテキストでecho urldecode('Yo+%3Ci%3Ewhats+up%3C%2Fi%3E');は、次のように出力されます。

、どうした

また、htmlspecialchars()でラップすると、出力は次のようになります。

Yo <i>whats up</i>

また。

于 2013-03-06T19:20:07.030 に答える
2

投稿文字列がURL用にエンコードされているようです。

urldecodeを使用してこれらの文字を削除できます

echo urldecode($_POST['string']);
于 2013-03-06T19:20:31.880 に答える