Как использовать nl2br () для обработки строки с '\ r \ n'? - PullRequest
3 голосов
/ 08 марта 2011

Я получаю значение описания продукта, хранящееся в базе данных, от администратора через textarea после отправки формы.Когда я выбираю описание из базы данных, я получаю $description = $row['description'];, и я хотел бы отобразить $ description на главной странице следующим образом: echo nl2br($description);, но вместо новых строк я вижу "\r\n" символов.Из того, что я нашел здесь и в сети, ваша строка должна быть заключена в двойные кавычки, например:

echo nl2br("Hello, \r\n This is the description");

Теперь значение $description из базы данных на самом деле "Hello, \r\n This is the description", нов моем сценарии я должен использовать его так:

echo nl2br($description);

, который не делает br, вместо этого выводит \r\n.Итак, что я могу сделать, я не могу использовать здесь двойные кавычки, исходя из моего опыта.

Ответы [ 4 ]

6 голосов
/ 08 марта 2011

Вы могли бы перевести их в соответствующие escape-последовательности перед передачей строки через nl2br(), например:

$description = nl2br(str_replace('\\r\\n', "\r\n", $description));

Но что буквальные escape-символы делают в вашей базе данных впервое место?

1 голос
/ 08 марта 2011

Вы храните буквенное значение \r\n в своей базе данных, а не фактические символы, которые они представляют.

Проверьте это в своей базе данных.Если вы видите \r\n в поле описания, то вы, вероятно, избегаете обратной косой черты при сохранении данных.

0 голосов
/ 08 марта 2011

nl2br может принимать второй (необязательный) аргумент для is_xhtml, который преобразует \r\n в <br> для вас. Просто измените свою строку на:

echo nl2br($description, TRUE);
0 голосов
/ 08 марта 2011

Похоже, ваш текст содержит отдельные символы \, r, \ и n и не содержит реальных символов новой строки.Таким образом, str_replace() должен выполнить работу:

echo str_replace('\r\n', '<br>', $description);
...