0

PHPでJavascriptテキストをエスケープするための最良の方法を探していますjson_encodeが、これはその仕事には間違ったツールです。

問題はこの行から来ています:

echo " onclick=\"SwitchDiv('" . $option . "')\"";
にアポストロフィがある場合$option、これはクライアント側の失敗のジューシーなボールです。ただし、ストレートを実行してjson_encodeも(他のコンテキストでは完全に機能します)、役に立ちません。
echo " onclick=\"SwitchDiv(" . json_encode($option) . ")\"";
これにより、の出力文字列が作成され、値onclick="SwitchDiv("athlete's foot")"が早期に終了しonclickます。(これは、onclick値を一重引用符で囲んだ場合にも発生します。)

これを回避するエレガントな方法はありますか?json_encode一重引用符をエスケープする正規表現を介して出力をファネルする必要がありますか?

4

1 に答える 1

3

json_encode仕事に適したツールです。問題は、そのJavascriptもHTML属性に含めているため、エンコードする必要があるという事実から発生しますhtmlspecialchars

echo " onclick=\"SwitchDiv(" . htmlspecialchars(json_encode($option)) . ")\"";
于 2012-06-21T15:27:25.857 に答える