Я получаю значение описания продукта, хранящееся в базе данных, от admin через 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's, вместо этого выводит \r\n
. Итак, что я могу сделать, я не могу использовать двойные кавычки здесь, по моему опыту.
Вы можете перевести их в соответствующие escape-последовательности перед передачей строки через nl2br()
, например:
$description = nl2br(str_replace('\\r\\n', "\r\n", $description));
Но каковы буквальные побеги в вашей базе данных в первую очередь?
Вы сохраняете буквальное значение \r\n
в своей базе данных, а не фактические символы, которые они представляют.
Проверьте это в своей базе данных. Если вы видите \r\n
в поле описания, то вы, вероятно, избегаете обратную косую черту, когда вы храните данные.
Похоже, ваш текст содержит отдельные символы \
, r
, \
и n
и не содержит фактических символов новой строки. Таким образом, str_replace()
должен выполнить задание:
echo str_replace('\r\n', '<br>', $description);
Nl2br может взять второй (необязательный) аргумент для «is_xhtml», который преобразует \r\n
в a для вас. Просто измените свою линию на:
echo nl2br($description, TRUE);