2010-11-19 6 views
9

Così quando eseguo json_encode, acquisisce anche \ r \ n da MySQL. Ho provato a riscrivere le stringhe nel database senza alcun risultato. Ho provato a cambiare la codifica in MySQL dal predefinito latin1_swedish_ci a ascii_bin e utf8_bin. Ho fatto tonnellate di roba str_replace e chr (10), chr (13). Non so che altro dire o fare in modo sto andando appena lascio questo qui ....Sostituzione r n (caratteri di nuova riga) dopo aver eseguito 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 funzione jsonReadable è da here e la funzione di analisi è da here. Gli str_replaces che sono già presenti sono perché ottengo strani tag html formattati come </h1>. Infine, $ new è un array creato sopra. Codice completo su richiesta.

Aiutami StackOverflow. Sei la mia unica speranza

+0

Hai già letto la specifica JSON? http://www.json.org/ –

+0

Sì, ho lavorato con JSON per un lungo periodo, la cosa è che l'output di questo script è stato acquisito da Flash per un CMS e flash no-likey la roba di \ r \ n . Inserisce semplicemente nuove linee che non vogliamo. Vogliamo
. E sì, ho provato nl2br, senza fortuna. –

+0

Quindi qualcuno ha deciso di non implementare correttamente JSON in Flash. Bello. –

risposta

7

La stringa contiene "\ r \ n" (come in 0x0D 0x0A) o la stringa letterale '\ r \ n'? Se è il primo, questo dovrebbe rimuovere qualsiasi newline.

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

Opzionalmente, sostituire il secondo parametro "" con "< br/>", se si desidera sostituire le nuove righe con un tag br. Per il secondo caso, prova quanto segue:

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

Questo non ha funzionato, sono ancora lì. Penso che * forse * abbia qualcosa a che fare con MySQL:/ –

+0

Molto utile @Frankie, grazie. – DnfD

2

ho avuto un problema simile, ho usato:

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

Non sono sicuro se questo aiuterà con le vostre esigenze.

+0

Anche questo non ha funzionato, ancora una volta, penso che questo potrebbe essere un problema di MySQL. Grazie per il tentativo però! * high-five * –

4

Non sostituirlo nel JSON, sostituirlo nella sorgente prima di codificarlo.

Problemi correlati