Как заменить r & n на?


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

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

все это должно работать, но я все еще получаю новые строки. Они двойные:"rr". Это не должно привести ни к одному из них, верно?

8 53

8 ответов:

уже nl2br()

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

$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');

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

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

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

это работает:

$description = nl2br("$description");

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

$description = nl2br($description);

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

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

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

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

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