0

ユーザーは、htmlページのtextareaに任意のテキストを入力します。文字列はAJAXを使用してサーバーに送信され、に返され<span id="userstring"></span>ます。テキストエリアに入力されたものが何であれ、スパンに表示されます。すべて正常に機能しますが...ユーザーが<b>hello</ b>などのテキストを含むタグを入力すると、<b> hello</b>代わりに太字のhelloという単語が表示されます。

したがって、目標は、入力された文字列の最小変更を行うことです。これにより、入力された文字列とまったく同じ方法でスパンに表示されます。

問題は<と>の記号であると判断したので、私の計画ではそれらを&lt;とに置き換えます&gt;。スパン領域では、入力したときと同じように見えます。また、&記号を気にする必要があるので、ユーザーが入力すると表示'&gt;'されます&gt;。そのため、&は。に置き換える必要があり&amp;ます。他に気をつけるべきことはありますか?私はmysqldbに文字列を挿入しないので、'などの予防策を講じません。しかし、私はその文字列を操作するので、文字列の変更を最小限に抑えたいと思います。&、<、>のみを置き換えても問題ありません。何か忘れましたか?

ありがとうございました。

4

1 に答える 1

5

使用するhtmlspecialchars()

<php
$string = '<b>bold text</b>';
echo htmlspecialchars($string, ENT_HTML5, "UTF-8"); 
?>

を省略するENT_HTML5と、デフォルトで。になりますENT_HTML401 | ENT_COMPAT。上記のコードでは、ENT_COMPATがオーバーライドされているため、引用符(")はエスケープされなくなります。

于 2012-04-23T17:14:28.743 に答える