Замена \r\n (символы новой строки) после запуска json_encode
Поэтому, когда я запускаю json_encode, он также получает \r\n из MySQL. Я пытался переписать строки в базе данных безрезультатно. Я попытался изменить кодировку в MySQL со значения по умолчанию latin1_swedish_ci на ascii_bin и utf8_bin. Я сделал тонны str_replace и chr(10), chr(13). Я не знаю, что еще сказать или сделать, поэтому я просто оставлю это здесь...
$json = json_encode($new);
if(isset($_GET['pretty'])) {
echo str_replace("\/", "/", jsonReadable(parse($json)));
} else {
$json = str_replace("\/", "/", $json);
echo parse($json);
}
Функция jsonReadable отсюда, а функция разбора отсюда. Уже есть str_replaces, потому что я получаю странные отформатированные HTML-теги, такие как h1>. Наконец, $new - это массив, созданный выше. Полный код по запросу.
Помогите мне Stackru. Ты моя единственная надежда
3 ответа
Содержит ли строка "\r\n" (как в 0x0D 0x0A) или буквальную строку "\ r \ n"? Если это первое, это должно удалить любые новые строки.
$json = preg_replace("!\r?\n!", "", $json);
При желании замените второй параметр "" на "
", если хотите заменить символы новой строки тегом br. В последнем случае попробуйте следующее:
$json = preg_replace('!\\r?\\n!', "", $json);
Не заменяйте его в JSON, замените его в источнике, прежде чем кодировать его.
У меня была похожая проблема, я использовал:
$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");
Не уверен, поможет ли это вашим требованиям.