PHP/MySQL で文字列をエスケープ/削除する際に問題が発生しています - 冗長なスラッシュが常にあるようです。
例として、次の文字列を見てみましょう。
<span style="text-decoration:underline;">underline</span>
データベースに文字列を追加するとき、私はそれをエスケープしてmysql_real_escape_string()
おり、以下がデータベースに保存されます( EDIT : mysql アプリでデータベースに直接クエリを実行してこれを確認しました):
<span style=\\\"text-decoration:underline;\\\">underline</span>
データベースから読み戻すときに、文字列を渡すstripslashes()
と、次のものが返されます。
<span style=\"text-decoration:underline;\">underline</span>
引用符はまだエスケープされているため、html が壊れ、テキストに下線が引かれません。
- なぜ
mysql_real_escape_string()
3 つのスラッシュを追加し、stripslashes()
2 つのスラッシュを削除するのですか? 両方とも1つのスラッシュを追加/削除することを期待しています. - どうすればこれを防ぐことができますか?
- 私はこれに正しい方法でアプローチしていますか?