回答編集履歴

1

微修正

2017/05/12 22:38

投稿

miyahan
miyahan

スコア3095

test CHANGED
@@ -1,7 +1,3 @@
1
- 配列格納時に htmlspecialchars() を行っていますが、基本的に文字のエスケープはHTML出力時(表示時)にしましょう。
2
-
3
-
4
-
5
1
  json_encode() には特殊な文字をエスケープするオプションが用意されているので、htmlspecialchars() は使わず、そのオプションを使った方がシンプルです。
6
2
 
7
3
 
@@ -67,3 +63,11 @@
67
63
 
68
64
 
69
65
  で出力した後は、JavaScript 側でJSONを読んでオブジェクトに変換してから利用してあげればOKです。
66
+
67
+
68
+
69
+ ---
70
+
71
+
72
+
73
+ ちなみに提示いただいたコードでは配列格納時に htmlspecialchars() を行っていますが、早々にエスケープしてしまうと、エスケープしたことで値の比較や検索ができなくなったり、二重にエスケープして出力しまったりといったトラブルの元になるため、基本的に文字のエスケープは最後の最後、HTML出力時(表示時)にするのが鉄則です。今回の例では `echo htmlspecialchars($jsonTest, ENT_QUOTES, 'UTF-8');` と echo するときにエスケープすべきでしょう。