1
  `{\
     "wins\":[\"http://nintendos.t15.org/folder.dsos\",\"http://nintendos.t15.org
     /NintendOS%20Office/word.dsos?create=true\"
  ]}`

これは、PHP でファイルに書き込まれた JSON 文字列です。

どの言語 (JS か PHP) かは気にしませんが、データ ("\ to " など) をエスケープして使用するにはどうすればよいでしょうか? 正確なコードは次のとおりです。

function SaveSession(){
 try{
   if(user){
    var date=new Date();
    var month=date.getMonth()+1;
    var day=date.getDate();
    var year=date.getFullYear();
    var hour=date.getHours();
    var minutes=date.getMinutes();
    var seconds=date.getSeconds();
    if(minutes<10){
        minutes="0"+minutes;
    }
    if(seconds<10){
           seconds="0"+seconds;
    }
    dt=""+month+"/"+day+"/"+year+" "+hour+":"+minutes+":"+seconds+"";
    var session=new Object();
    session.wins=new Array();
    var pages=document.getElementsByClassName("page");
        if(pages[0]){
           session.wins.push(pages[0].getElementsByTagName("iframe")[0].src);
        }
        if(pages[1]){                            
                   session.wins.push(pages[1].getElementsByTagName("iframe")[0].src);
        }
        if(pages[2]){
                   session.wins.push(pages[2].getElementsByTagName("iframe")[0].src);
        }if(pages[3]){
                   session.wins.push(pages[3].getElementsByTagName("iframe")[0].src);
        }if(pages[4]){
           wins.push(pages[4].getElementsByTagName("iframe")[0].src);
        }if(pages[5]){
                   session.wins.push(pages[5].getElementsByTagName("iframe")[0].src);
        }if(pages[6]){
               session.wins.push(pages[6].getElementsByTagName("iframe")[0].src);
        }if(pages[7]){
               session.wins.push(pages[7].getElementsByTagName("iframe")[0].src);
        }if(pages[8]){
               session.wins.push(pages[8].getElementsByTagName("iframe")[0].src);
        }if(pages[9]){
               session.wins.push(pages[9].getElementsByTagName("iframe")[0].src);
        }
            ajaxObj.onreadystatechange=function(){
        if(ajaxObj.readyState>=4 && ajaxObj.status==200){
    }
    else{
    }
     }
     var sessionData=escape(JSON.stringify(session));
     ajaxObj.open("POST","req.php",true);
     ajaxObj.setRequestHeader("Content-type","application/x-www-form-urlencoded");
     ajaxObj.send("save_session=true&user="+username+"&session="+sessionData+"");
}
}
catch(err){
    alert("Error. Unable to save session. "+err+"");
}
 }

基本的に、JSON オブジェクトをファイルに保存したいのですが、再度使用する場合は特殊文字をエスケープする必要があります。

4

2 に答える 2

1

テストしていませんが、うまくいくかもしれません:)

<?php 

str_replace('\"', '"', $jsonString);

?>
于 2012-06-07T18:03:14.950 に答える
0

実際にはかなり単純です。

<?php
    $a = array('x' => '"xyzhttp://test\escape');
    $b = json_encode($a); // {"x":"\"xyzhttp:\/\/test\\escape"}
    print_r(json_decode($b, true)); // Array ( [x] => "xyzhttp://test\escape ) 
?>

関数を使用するだけjson_*です。

于 2012-06-07T18:06:55.763 に答える