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

Ceci est ma chaîne JSON qui est écrite dans le fichier avec PHP.Comment faire pour échapper des caractères spéciaux à utiliser pour les données JSON

Je me fiche de quelle langue (JS ou PHP), mais comment échapper les données (comme "\ to") pour l'utiliser? Le code exact est ci-dessous:

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+""); 
} 
} 

Fondamentalement, je veux sauver l'objet JSON dans un fichier, et je dois échapper aux caractères spéciaux si je veux jamais l'utiliser à nouveau.

+0

[Qu'avez-vous essayé?] (Http://whathaveyoutried.com) –

+0

ne voulez-vous pas dire unescape ?? – zeacuss

+0

totalement confus quant à ce que vous voulez faire ... (un) échapper correctement pour ré-analyser la chaîne JSON, ou avant d'écrire, ou de le charger en tant qu'objet PHP, ou ...? On dirait que ce que vous devez corriger est le bit qui écrit cela dans le fichier. – haylem

Répondre

1

ont pas testé, mais il pourrait fonctionner :)

<?php 

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

?> 
+0

Merci, cela fonctionne, mais maintenant, quand j'essaie de demander les données en utilisant AJAX, il arrive toujours avec \ ", ce qui le rend incapable d'analyser. Comment puis-je y échapper dans JS? – RickyAYoder

+0

pourriez-vous nous montrer le code que vous avez saisi? – libjup

0

en fait assez simple.

<?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) 
?> 

Utilisez simplement les fonctions json_*.

+0

Le serveur de mon hébergeur stupide n'a pas les dernières nouvelles sur PHP. – RickyAYoder

Questions connexes