私は定期的に同様の形式を使用していて、単一の二重引用符がフォームに入力されると、自分自身に出力すると電子メールで引用符がASCII \ 'のバックスラッシュを使って見て、ユニークな文字エンコーディングの特殊文字にディッピングしますが、通常の引用符として出力するのに役立つものは何も見つかりません。引用符で囲まれたPHPからの出力
答えて
これはPHPの「Magic Quotes」という古いセキュリティ機能です。 GETおよびPOST変数からの引用符は、バックスラッシュでエスケープされます。
サーバーphp.iniのmagic_quotes_gpc
の値をoff
に変更するか、手動でstripslashes($string)
を使用して文字列をサニタイズして無効にすることができます。
ねえ、stripslashesを使ってくれてありがとうございます($ _ POST ['comment']); filter_sanitize_stringを追加する代わりに – user966834
しかし、あなたのスクリプトは 'magic_quotes_gpc'が有効になっていることに依存していることに注意してください。この機能はDEPRECATEDとマークされており、PHPの将来のリリースでは削除される可能性があります。 – DerVO
古くなった古くなったPHPの設定は、magic_quotes_gpc
です。
ただオフにする
ok iveはphp.iniでこれを無効にしましたが、同じ問題があったとしても – user966834
が正しいphp.iniファイルを編集していることを確認してください。後でサーバを再起動 –
どのバージョンのPHPを使用していますか? $_GET
と$_POST
の引用符にバックスラッシュを自動的に追加する廃止予定の "機能"が有効になっているようです。それは現在、それを使用することは悪い習慣と考えられているので、それが無効になっていることを確認する必要があります。有効かどうかをチェックして無効にする方法については、thisページを参照してください。
一般に、引用符がエスケープされた文字列がある場合は、stripslashes
を使用して文字列を取り除くことができます。
$str = "\'hello\'";
echo $str . "\n";
//\'hello\'
echo stripslashes($str) . "\n";
//hello
ここにコードを貼り付けることはできますか?私は問題を少し早く解決するのに役立つかもしれないと思う。 –
あなたのシステムのマジッククオートの設定をチェックしましたか? http://php.net/manual/en/security.magicquotes.php – Mchl