nl2br的对面?是str_replace吗?

Jul*_*Lam 6 php

因此功能nl2br很方便.除了在我的网络应用程序中,我想做相反的事情,将换行符解释为新行,因为它们将被回显为预先填充的表单.

str_replace可以<br />用我想要的任何东西取代它,但是如果我放入\n,它就会反复地反斜杠和n.它只有在我的脚本中间放置一个文字换行符并且打破缩进(因此没有尾随空格)时才有效.

看到:

    <?=str_replace('<br />','
',$foo)?>
Run Code Online (Sandbox Code Playgroud)

我错过了逃脱角色吗?我想我尝试过各种组合......

Pas*_*TIN 18

可能会出现一些代码不够的情况; 所以,这样的事情,做你的替换:

$html = 'this <br>is<br/>some<br />text <br    />!';
$nl = preg_replace('#<br\s*/?>#i', "\n", $html);
echo $nl;
Run Code Online (Sandbox Code Playgroud)

即比简单更复杂str_replace;-)

注意:我通常会说不使用正则表达式来操纵HTML - 但是,在这种情况下,考虑到正则表达式会很简单,我想它会没问题.


另外,请注意我使用过 "\n"


基本上,<br>标签通常看起来像:

  • <br>
  • 或者<br/>,在之前有任意数量的空格/

这第二点是str_replace不够.

  • 否定了downvote.这个答案非常重要.如果你能确定你想要的所有东西都是由nl2br创建的,那么你很高兴.但是,如果要解释用户输入,则必须接受任何类型的换行标记. (3认同)

rye*_*guy 12

你想要这个:

<?=str_replace('<br />',"\n",$foo)?>
Run Code Online (Sandbox Code Playgroud)

你可能忘了使用双引号.如果使用双引号,则仅对特殊字符解析字符串.


Amy*_*y B 12

你在写'\n'吗?因为只有用双引号括起来才会正确解释\n : "\n".

偏离主题:<?=语法是邪恶的.请不要为了团队中的其他开发人员而使用它.

  • 不,这不是邪恶的.如果您使用的是XML文档类型,那么这只是一个问题.即便如此,它也很容易绕过.很多人在他们的观点中使用它.它比`<?php echo`更紧凑. (4认同)
  • <?=邪恶?我以为只是<?是邪恶的;)猜猜我需要赶上我的编码实践......为什么它是邪恶的,我可以问一下吗? (3认同)