Как заменить newline или \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". Это не должно сделать что-либо из этих сбоев правильно?
Ответы
Ответ 1
Существует уже nl2br()
функция, которая заменяет теги вставки <br>
перед новыми строками:
Пример (codepad):
<?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-последовательности для специальных символов не будут расширяться, если они встречаются в одинарных кавычках.
Ответ 2
Попробуйте использовать
$description = preg_replace("/\r\n|\r|\n/",'<br/>',$description);
Ответ 3
У вас могут быть настоящие символы "\" в строке (строки одиночной кавычки, как указано @Robik).
Если вы уверены, что строки "\ r" или "\n" также должны быть заменены, я говорю не о специальных символах, а о последовательности из двух символов "\" и "r", "\" в строке замены, и он будет работать:
str_replace(array("\r\n","\r","\n","\\r","\\n","\\r\\n"),"<br/>",$description);
Ответ 4
nl2br()
, так как у вас есть, он должен работать нормально:
$description = nl2br($description);
Скорее всего, что закрытая '
в первой строке вашего примера кода вызывает вашу проблему. Удалите 'after $description...
...$description');
Ответ 5
Это будет работать точно:
str_replace("\\r","<br />",$description);
str_replace("\\n","<br />",$description);
Ответ 6
nl2br() работал у меня, но мне нужно было обернуть переменную двойными кавычками:
Это работает:
$description = nl2br("$description");
Это не работает:
$description = nl2br($description);
Ответ 7
Попробуйте следующее:
echo str_replace( array('\r\n','\n\r','\n','\r'), '<br>' , $description );
Ответ 8
Я думаю, str_replace (array ("\ r\n", "\ r", "\n"), "", $ string); Буду работать.
Ответ 9
$description = nl2br(stripcslashes($description));
Ответ 10
Если вы используете nl2br
, все вхождения \n
и \r
будут заменены на <br>
. Но если (я не знаю, как это), вы все равно получаете новые строки, которые вы можете использовать
str_replace("\r","",$description);
str_replace("\n","",$description);
Чтобы заменить ненужные новые строки пустой строкой