Подтвердить что ты не робот

Как заменить 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". Это не должно сделать что-либо из этих сбоев правильно?

4b9b3361

Ответ 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);

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