Таким образом, функция nl2br удобна. За исключением моего веб-приложения, я хочу сделать наоборот, интерпретировать разрывы строк как новые строки, так как они будут отражены в предварительно заполненной форме.
str_replace может занять <br />
и заменить его на все, что захочу, но если я вложу \ n, это будет означать обратную косую черту и n. Он работает только в том случае, если я помещаю буквальный разрыв строки в середине моего скрипта и разбиваю отступ (поэтому нет конечного пространства).
Видеть:
<?=str_replace('<br />',' ',$foo)?>
Я пропускаю escape-символы? Я думаю, я пробовал каждую комбинацию …
Вы пишете '\n'
? Поскольку \ n будет интерпретироваться правильно, если вы окружите его двойными кавычками: "\n"
.
Off: синтаксис <?=
Является злым. Пожалуйста, не используйте его для других разработчиков в вашей команде.
Вероятно, будут ситуации, когда вашего кода недостаточно; поэтому, как насчет чего-то подобного, чтобы сделать вашу замену:
$html = 'this <br>is<br/>some<br />text <br />!'; $nl = preg_replace('#<br\s*/?>#i', "\n", $html); echo $nl;
т.е. немного сложнее простого str_replace
😉
Примечание. Обычно я бы сказал, что не следует использовать регулярное выражение для управления HTML-кодом, но в этом случае рассмотрение регулярного выражения будет довольно простым, я полагаю, что все будет в порядке.
Кроме того, обратите внимание, что я использовал "\n"
\n
\n
В основном, тег с тегом обычно выглядит так:
<br>
<br/>
, с любым количеством пробелов перед /
И второй момент заключается в том, что str_replace
недостаточно .
Вы бы хотели:
<?=str_replace('<br />',"\n",$foo)?>
Вероятно, вы забыли использовать двойные кавычки. Строки анализируются только для специальных символов, если вы используете двойные кавычки.
Я просто пропустил nl2br()
и использовал это по-другому следующим образом:
$post_content = str_replace('\n',"<br />",$post_content );
и все работает нормально.
Для полного описания, пожалуйста, посетите мой блог, здесь:
Как использовать nl2br и reverse br2nl
<?php echo strip_tags('Dear<br/>Bidibidi'); ?> Dear Bidibidi <?php echo nl2br('Dear Bidibidi'); ?> Dear<br/>Bidibidi
Альтернатива ответу @PascalMARTIN
$string = stri_replace(array( '<br>', '<br/>', '<br />', ), "\n", $string);
Он не работает с несколькими пробелами типа <br />
но это должен быть очень редкий случай.