2010-11-19 11 views
9

Also, wenn ich json_encode ausführen, ergreift es auch die \ r \ n von MySQL. Ich habe versucht, Zeichenfolgen in der Datenbank umsonst umzuschreiben. Ich habe versucht, die Kodierung in MySQL vom Standard latin1_swedish_ci zu ascii_bin und utf8_bin zu ändern. Ich habe Tonnen von str_replace und chr (10), chr (13) Zeug getan. Ich weiß nicht, was sonst noch zu sagen oder zu tun, so bin ich werde dies nur hier lassen ....Ersetzen von r n (Zeilenumbruchzeichen) nach dem Ausführen von json_encode

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

Die jsonReadable Funktion ist von here und die Parsing-Funktion ist von here. Die str_replaces, die bereits da sind, sind, weil ich komisch formatierte HTML-Tags wie </h1> bekomme. Schließlich ist $ new ein Array, das oben erstellt wurde. Vollständiger Code auf Anfrage.

Hilf mir StackOverflow. Du bist meine einzige Hoffnung

+0

Haben Sie die JSON-Spezifikation schon gelesen? http://www.json.org/ –

+0

Yeah Ich habe mit JSON für eine lange Zeit gearbeitet, die Sache ist, dass die Ausgabe dieses Skripts von Flash für ein CMS & flash no-likey \ r \ n Zeug aufgenommen wird . Es fügt nur neue Zeilen ein, die wir nicht wollen. Wir wollen
. Und ja, ich habe versucht nl2br, kein Glück. –

+0

Also entschied sich jemand, JSON nicht richtig im Flash zu implementieren. Schön. –

Antwort

7

Enthält die Zeichenfolge "\ r \ n" (wie in 0x0D 0x0A) oder die Literalzeichenfolge "\ r \ n"? Wenn es ersteres ist, sollte dies alle Zeilenumbrüche entfernen.

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

Optional ersetzen den zweiten Parameter "" mit "< br/>", wenn Sie die Zeilenumbrüche mit einem br-Tag ersetzen möchten. Versuchen Sie im letzteren Fall Folgendes:

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

Das hat nicht funktioniert, sie sind immer noch da. Ich denke * vielleicht * es hat etwas mit MySQL zu tun:/ –

+0

Sehr hilfreich @Frankie, danke. – DnfD

2

ich ein ähnliches Problem hatte, habe ich:

$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"); 

Nicht sicher, ob dies mit Ihren Anforderungen helfen.

+0

Das hat auch nicht funktioniert, ich glaube, das könnte ein MySQL-Problem sein. Danke für den Versuch! * high-five * –

4

Ersetzen Sie es nicht im JSON, ersetzen Sie es in der Quelle, bevor Sie es codieren.