そのため、POST 経由で HTML 文字列を PHP に送信する簡単なスクリプトを作成しています。それをエコーアウトしようとすると、奇妙な文字でエンコードされます。
送信している文字列:
'Yo <i>whats up</i>'
PHPでエコーアウトすると得られるもの
Yo+%3Ci%3Ewhats+up%3C%2Fi%3E
ここで何が起こっているのですか?元の HTML 文字列に戻すために使用できる PHP メソッドはありますか?
使いたい
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>
また。
投稿文字列がURL用にエンコードされているようです。
urldecodeを使用してこれらの文字を削除できます
echo urldecode($_POST['string']);