Sostituzione \ r \ n (caratteri di nuova riga) dopo l'esecuzione json_encode
-
26-09-2019 - |
Domanda
Così, quando corro json_encode, afferra il \ r \ n da MySQL pure. Ho cercato di riscrivere le stringhe nel database senza alcun risultato. Ho provato a cambiare la codifica in MySQL dalle latin1_swedish_ci predefinite alla ascii_bin e utf8_bin. Ho tonnellate fatta di str_replace e chr (10), chr (13) roba. Non so che altro dire o fare in modo sto andando appena lascio questo qui ....
$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 qui e la funzione di analisi è da qui . Le str_replaces che sono già in ci sono, perché io sono sempre strani tag in formato HTML come . Infine, $ nuovo è una matrice che è realizzato in precedenza. codice completo su richiesta.
Help me StackOverflow. Sei la mia unica speranza
Soluzione
La stringa contiene "\ r \ n" (come in 0x0D 0x0A) o la stringa letterale '\ r \ n'? Se è la prima, questo dovrebbe eliminare eventuali nuove righe.
$json = preg_replace("!\r?\n!", "", $json);
In alternativa, sostituire il secondo parametro "" con "
", se si desidera sostituire le nuove righe con un tag br. Per quest'ultimo caso, provare quanto segue:
$json = preg_replace('!\\r?\\n!', "", $json);
Altri suggerimenti
Non sostituire nel JSON, sostituirlo nella fonte prima di codificarlo.
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 aiuto volontà con le vostre esigenze.