0

<INPUT>ユーザーの名前のテキストがあり、ユーザーが入力することにしたとします。

Johnny's Pizza

これはDBに次のように保存されます

Johnny's Pizza

しかし、ユーザーが編集することを決定した場合、私は次のようにテキストを再入力<INPUT>します

echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8'));

として表示されます

Johnny&#039;s Pizza

入力フィールド内。

PHP.netには、使用を提案するコメントがあります

echo form_input('name', htmlspecialchars($name, ENT_QUOTES, 'UTF-8', FALSE));

つまり、FALSEを参照し$double_encodingますが、それでも

Johnny&#039;s Pizza

入力フィールドに入力します。

この二重エンコーディングを回避する方法はありますか?これはまだ使用中に修正できるものENT_QUOTESですか?

Codeigniter2.0.3の使用。

4

1 に答える 1

2

使用htmlspecialcharsするのが正しいアプローチであり、ページに直接出力した場合、説明した結果は得られません。

おそらく、form_input関数はHTMLではなくテキストを受け取ることを期待しているため、それhtmlspecialchars自体が実行されます。その場合、解決策はテキストを渡すだけで、最初にHTMLの値をエンコードしないことです。

于 2011-12-03T17:20:49.570 に答える