2010-11-19 13 views
9

Donc quand j'exécute json_encode, il récupère aussi le \ r \ n de MySQL. J'ai essayé de réécrire des chaînes dans la base de données en vain. J'ai essayé de changer l'encodage dans MySQL de la valeur par défaut latin1_swedish_ci à ascii_bin et utf8_bin. J'ai fait des tonnes de trucs str_replace et chr (10), chr (13). Je ne sais pas quoi dire ou faire, je vais laisser ce ici ....Remplacement de r n (caractères de nouvelle ligne) après l'exécution de json_encode

$json = json_encode($new); 
if(isset($_GET['pretty'])) { 
echo str_replace("\/", "/", jsonReadable(parse($json))); 
} else { 
$json = str_replace("\/", "/", $json); 
echo parse($json); 
} 

La fonction jsonReadable est de here et la fonction d'analyse syntaxique est de here. Les str_replaces qui sont déjà là sont parce que je reçois des balises html formatées bizarres comme </h1>. Enfin, $ new est un tableau créé ci-dessus. Code complet sur demande.

Aidez-moi StackOverflow. Tu es mon seul espoir

+0

Avez-vous déjà lu la spécification JSON? http://www.json.org/ –

+0

Ouais j'ai travaillé avec JSON pendant longtemps, la chose est que la sortie de ce script est prise par flash pour un CMS et flash pas-likey le truc . Il insère simplement de nouvelles lignes que nous ne voulons pas. Nous voulons
. Et oui, j'ai essayé nl2br, pas de chance. –

+0

Alors, quelqu'un a décidé de ne pas implémenter JSON correctement dans Flash. Charmant. –

Répondre

7

La chaîne contient-elle "\ r \ n" (comme dans 0x0D 0x0A) ou la chaîne littérale "\ r \ n"? Si c'est le premier, cela devrait supprimer toutes les nouvelles lignes.

$json = preg_replace("!\r?\n!", "", $json); 

En option, remplacer le second paramètre « » avec « < br/> » si vous souhaitez remplacer les nouvelles lignes avec une balise br. Pour ce dernier cas, essayez ce qui suit:

$json = preg_replace('!\\r?\\n!', "", $json); 
+0

Cela n'a pas fonctionné, ils sont toujours là. Je pense que * peut-être * ça a quelque chose à voir avec MySQL:/ –

+0

Très utile @ Frankie, merci. – DnfD

2

J'ai eu un problème similaire, je l'ai utilisé:

$p_num = trim($this->recp); 
$p_num = str_replace("\n", "", $p_num); 
$p_num = str_replace("\r", ",", $p_num); 
$p_num = str_replace("\n",',', $p_num); 
$p_num = rtrim($p_num, "\x00..\x1F"); 

Je ne sais pas si cela vous aidera à vos besoins.

+0

Cela n'a pas fonctionné, encore une fois, je pense que cela pourrait être un problème de MySQL. Merci pour la tentative si! * high-five * –

4

Ne le remplacez pas dans le JSON, remplacez-le dans la source avant de l'encoder.