Попытка просто заменить некоторые новые строки. Пробовал 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()
функция, которая заменяет вставки <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-последовательности для специальных символов не будут расширяться, если они встречаются в строках в одинарных кавычках.
Попробуйте использовать это
$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);
Это будет работать наверняка:
str_replace("\\r","<br />",$description);
str_replace("\\n","<br />",$description);
Попробуй это:
echo str_replace( array('\r\n','\n\r','\n','\r'), '<br>' , $description );
Я думаю, что str_replace (array («\ r \ n», «\ r», «\ n»), «», $ string); Буду работать.