アプリケーションが特殊文字を処理できるかどうかを確認するためにテストを行ったところです。
PHP フォームでは、次のように MySQL にデータを追加します。
"test"| | 'test'| | " £ $ % ^ & * ( )| |'test' "test"
データはエスケープされており、MySQL では次のようになります。
\\\"test\\\"| | \\\'test\\\'| | ! \\\" £ $ % ^ & * ( )| |\\\'test\\\' \\\"test\\\"
それは次のような JSON になります。
[
"\\\\\\\"test\\\\\\\"",
"\\\\\\\'test\\\\\\\'",
"! \\\\\\\" £ $ % ^ & * ( )",
"\\\\\\\'test\\\\\\\' \\\\\\\"test\\\\\\\"",
]
JSONで解析できないため、JSONLint.comで上記を確認したところ、次のエラーが発生しました。
Parse error on line 2:
..."test\\\\\\\"", "\\\\\\\'test\\\\\\\
----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['
修正できることはわかっていますが、どこがわかりませんか?
- MySQLに送信する前にPHPで?
- MySQLデータベースに送信される前にMySQLクエリで?
- JSONに行く前にPHPで?