4

テキスト領域があり、テキスト領域の入力を取得して、すべてをマージしたいと思います。引用符をエスケープしていることを除いて、すべて正常に機能します。たとえば、次のようtest'sに出力されますtest/'s

これを修正するために、次のようなhtmlentriesを試しました。

<?php $inputtext= $_POST['textinput'];
        $encodetext = htmlentities($inputtext);
        $finaltext = html_entity_decode($encodetext);

        echo '<p>'.$finaltext .'</p>';  ?>

これはhtml_entity_decodeマニュアルに従って動作するはずです(間違って読んでいない限り、そうである可能性が非常に高いです)。

4

3 に答える 3

7

解決策は、おそらくスラッシュを削除することです。

データが POST または GET から来ると、スラッシュが自動的に追加されます。これはマジック クォートと呼ばれ、デフォルトで有効になっています。

これらのスラッシュは、次を使用して削除できますstripslashes()

<?php

$text = $_POST['txtarea']; // from textarea
if(get_magic_quotes_gpc()){
  $text = stripslashes($text);
  // strip off the slashes if they are magically added.
}
$text = htmlentities($text);
// what htmlentities here does is really to convert:
//   & to &amp;
//   " to &#039;
//  and change all < and > to &lt; and &gt; respectively. this will automatically disable html codes in the text.
echo '<pre>'.$text.'</pre>';

?>

参照: http://php.net/manual/en/function.stripslashes.php

于 2009-12-25T10:24:34.027 に答える
2

$encodetext = htmlentities ($inputtext, ENT_QUOTES);一重引用符と二重引用符をエスケープしようとしない whichを使用する必要があります。ここのフラグの下を見てください: htmlentities

于 2011-06-24T02:08:30.113 に答える
1

htmlentitiesとへの呼び出しで 2 番目のパラメーターを渡していないことを確認してくださいhtml_entity_decode。そうした場合、引用符のエスケープ/エスケープ解除が異なります。および$quote_styleのドキュメントでパラメータの説明を確認してください。htmlentitieshtml_entity_decode

于 2009-12-25T10:23:27.843 に答える