Замените перевод строки из поля MySQL TEXT для анализа с помощью JSON - PullRequest
0 голосов
/ 31 марта 2010

«заменить новую строку» кажется вопросом, заданным здесь и там, как уже сто раз. Но, тем не менее, я еще не нашел никакого рабочего решения для себя.

У меня есть текстовая область, которую я использую для сохранения данных в БД. Затем, используя AJAX, я хочу получить данные из БД в серверной части, которая находится в поле TEXT, и передать их во внешний интерфейс с помощью JSON. Но вставка JSON возвращает ошибку, так как новые строки из БД не являются допустимым синтаксисом JSON, я думаю, что вместо этого следует использовать \ n ...

Но как мне заменить newlinew из БД на \ n?

Я пробовал это

$t = str_replace('<br />', '\n', nl2br($t));

и это

$t = preg_replace("/\r\n|\n\r|\r|\n/", "\n", $t);

и используя CHAR (13) и CHAR (10), и все же я получаю ошибку

новая строка в textarea эквивалентна, я думаю

$t = 'text with a 
newline';

выдает ту же ошибку. И в блокноте я ясно вижу, что это crlf

Ответы [ 2 ]

2 голосов
/ 31 марта 2010

Вам нужно экранировать все символы, которые имеют особое значение в JSON, а не только перевод строки. И вам также нужно конвертировать в UTF-8.

Нет необходимости изобретать велосипед, json_encode () может сделать все для вас.

1 голос
/ 31 марта 2010

Prfff ...> _ <Глупый я </p>

Я потерял еще одну косую черту перед заменой на \ n

$t = preg_replace("/\r\n|\n\r|\r|\n/", "\\n", $t);
...