2010-11-19 18 views
9

Tak więc po uruchomieniu json_encode, pobiera również \ r \ n z MySQL. Próbowałem przepisywania ciągów w bazie danych bez skutku. Próbowałem zmienić kodowanie w MySQL z domyślnego latin1_swedish_ci na ascii_bin i utf8_bin. Zrobiłem mnóstwo rzeczy str_replace i chr (10), chr (13). Nie wiem, co powiedzieć lub zrobić, więc będę po prostu zostawić to tutaj ....Zastępowanie r n (znaki nowej linii) po uruchomieniu json_encode

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

Funkcja jsonReadable wynosi od here a funkcja parse jest od here. W str_replaces, które już tam są, znajdują się dziwne sformatowane znaczniki html, takie jak </h1>. Na koniec, $ new to tablica, która została stworzona powyżej. Pełny kod na życzenie.

Pomóż mi StackOverflow. Jesteś moją jedyną nadzieją

+0

Czy znasz już specyfikację JSON? http://www.json.org/ –

+0

Tak, pracowałem z JSONem przez długi czas, chodzi o to, że dane wyjściowe tego skryptu są pobierane przez Flash dla CMS i flash-a-likey \ r \ n . Po prostu wstawia nowe linie, których nie chcemy. Chcemy
. I tak, próbowałem nl2br, bez powodzenia. –

+0

Tak więc ktoś zdecydował się nie prawidłowo wdrożyć JSON w Flash. Śliczny. –

Odpowiedz

7

Czy ciąg zawiera "\ r \ n" (jak w 0x0D 0x0A) lub literał "\ r \ n"? Jeśli jest to pierwsze, powinno to usunąć wszelkie nowe linie.

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

Ewentualnie wymienić drugi parametr „” z „< br/>” jeśli chcesz zastąpić nowe linie z tagiem br. W tym ostatnim przypadku spróbuj wykonać następujące czynności:

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

To nie zadziałało, oni wciąż tam są. Myślę, że * może * ma coś wspólnego z MySQL:/ –

+0

Bardzo pomocna @Frankie, dziękuję. – DnfD

2

Miałem podobny problem, użyłem:

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

Nie wiem, czy to pomoże z własnymi wymaganiami.

+0

To też nie zadziałało, znowu, myślę, że to może być problem MySQL. Dziękujemy za próbę! * high-five * –

4

Nie zamieniaj go w JSON, zastąp go w źródle przed zakodowaniem.

Powiązane problemy