Как использовать nl2br () для обработки строки с помощью '\ r \ n'?

Я получаю значение описания продукта, хранящееся в базе данных, от 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);