Intereting Posts
Насколько безопасно хранить переменные DB с помощью SetEnv или php.ini? OOP PHP PDO Мой первый проект, правильно ли я делаю? Подсчет значений в массиве Как подсчитать количество повторяющихся элементов в массиве PHP – Как обновить данные в MySQL при нажатии переключателя PHP Regex: выберите все, кроме последнего вхождения Ограничения API данных YouTube? Неустранимая ошибка: максимальное время выполнения 30 секунд превышено в C: Измените файл конфигурации в скомпилированном установщике Inno Setup (пользовательский файл конфигурации для каждого загружаемого исполняемого файла) как обновить LOB с помощью PHP в oracle? (OCI_INVALID_HANDLE) PHP Добавить строку в текстовый файл Проблема с открытием файла PHP? Неполный класс PHP при сериализации объекта в сеансах MySQL PHP по дням и всего за каждый день PHP mysqli – возвращает ассоциативный массив из подготовленного оператора

Как заменить \ r & \ n на <br/>?

Попытка просто заменить некоторые новые строки. Попробовали 3 разных способа, и я не получил никаких изменений:

$description = preg_replace('/\r?\n|\r/','<br/>', $description); $description = str_replace(array("\r\n","\r","\n"),"<br/>", $description); $description = nl2br($description); 

Все они должны работать, но я все еще получаю новые строки. Они двойные: «\ r \ r». Это не должно ли это сделать?

Существует уже nl2br() которая заменяет вставки тегов перед новыми nl2br() символами:

Пример ( кодовый код ):

 <?php // Won't work $desc = 'Line one\nline two'; // Should work $desc2 = "Line one\nline two"; echo nl2br($desc); echo '<br/>'; echo nl2br($desc2); ?> 

Но если он все еще не работает, убедитесь, что текст $desciption имеет двойную кавычку.

Это потому, что одинарные кавычки не «расширяют» escape-последовательности, такие как \n сравнению с двойными кавычками. Цитата из документации PHP:

Примечание . В отличие от синтаксисов с двойными кавычками и heredoc, переменные и escape-последовательности для специальных символов не будут расширяться, если они встречаются в одиночных кавычках.

Попробуйте использовать это

 $description = preg_replace("/\r\n|\r|\n/",'<br/>',$description); 

У вас могут быть настоящие символы «\» в строке (строки одиночной кавычки, как сказал @Robik).

Если вы уверены, что строки «\ r» или «\ n» также должны быть заменены, я не говорю о специальных символах здесь, а о последовательности двух символов «\» и «r», а затем избегаем «\ 'в строке замены, и он будет работать:

 str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),"<br/>",$description); 

nl2br() поскольку у вас есть, он должен работать нормально:

 $description = nl2br($description); 

Скорее всего, что закрытая ' в первой строке вашего примера кода вызывает вашу проблему». Удалите описание после $ …

 ...$description'); 

nl2br () работал для меня, но мне нужно было обернуть переменную двойными кавычками:

Это работает:

 $description = nl2br("$description"); 

Это не работает:

 $description = nl2br($description); 

Попробуй это:

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

Это будет работать точно:

 str_replace("\\r","<br />",$description); str_replace("\\n","<br />",$description); 

Если вы используете nl2br все вхождения \n и \r будут заменены на. Но если (я не знаю, как это), вы все равно получаете новые строки, которые можете использовать

 str_replace("\r","",$description); str_replace("\n","",$description); 

Чтобы заменить ненужные новые строки пустой строкой