Замена rn (символы новой строки) после запуска кодирования json

поэтому, когда я запускаю json_encode, он захватывает rn из 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-теги, такие как . Наконец, $new-это массив, созданный выше. Полный код по запросу.

помогите мне StackOverflow. Ты моя единственная надежда!--11-->

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

Не уверен, что это поможет с вашими требованиями.