検証する記号
$data = array(1=>'<',2=>'>',3=>'"',4=>"'",5=>'&',6=>'/',7=>"\\");
var_dump($data);
array(7) {
[1]=>
string(1) "<"
[2]=>
string(1) ">"
[3]=>
string(1) """
[4]=>
string(1) "'"
[5]=>
string(1) "&"
[6]=>
string(1) "/"
[7]=>
string(1) "\"
}
検証1 json_encode($data)
JSONエンコードをかけてダンプしてみる。
$json = json_encode($data);
var_dump($json);
string(60) "{"1":"<","2":">","3":"\"","4":"'","5":"&","6":"\/","7":"\\"}"
input要素にこのJSONを埋め込むとバグになる。
<input type="text" value='<?php echo $json?>' style="width:100%" />
検証2 json_encode($data,true)
JSONエンコードをかけてダンプしてみる。「<」と「>」は変換されている。
$json = json_encode($data,true);
var_dump($json);
string(70) "{"1":"\u003C","2":"\u003E","3":"\"","4":"'","5":"&","6":"\/","7":"\\"}"
input要素にこのJSONを埋め込むとバグになる。
<input type="text" value='<?php echo $json?>' style="width:100%" />
検証3 json_encode($data,JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_HEX_APOS)
JSONエンコードをかけてダンプしてみる。「<」、「>」、「"」、「'」は変換されている。
$json = json_encode($data,JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_HEX_APOS);
var_dump($json);
string(84) "{"1":"\u003C","2":"\u003E","3":"\u0022","4":"\u0027","5":"\u0026","6":"\/","7":"\\"}"
input要素にこのJSONを埋め込んでもバグにならない。
<input type="text" value='<?php echo $json?>' style="width:100%" />
JavaScriptで埋め込まれたJSON文字列をパースしてみる。
$json4 = $('#json4').val();
var data = JSON.parse($json4);
console.log(data);
Object {1: "<", 2: ">", 3: """, 4: "'", 5: "&", 6: "/", 7: "¥"}
- ホーム
- サンプルソースコード
- PHP | サンプル
- 文字記号のJSON変換を検証