Попытка просто заменить некоторые новые строки. Попробовали 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);
Чтобы заменить ненужные новые строки пустой строкой