因此功能nl2br很方便。除了在我的网络应用程序中,我想做相反的事情,将换行符解释为新行,因为它们将被回显为预先填充的表单。
str_replace可以使用<br />
并将其替换为我想要的任何内容,但是如果我放入\ n,它会回显字样反斜杠和n。它只有在我的脚本中间放置一个文字换行符并且打破缩进(因此没有尾随空格)时才有效。
请参阅:
<?=str_replace('<br />','
',$foo)?>
我错过了逃脱角色吗?我想我尝试过各种组合......
答案 0 :(得分:18)
可能会出现一些代码不够的情况;所以,这样的事情,做你的替代:
$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>
<br/>
,在/
并且第二点是str_replace
不够的地方。
答案 1 :(得分:12)
你想要这个:
<?=str_replace('<br />',"\n",$foo)?>
你可能忘了使用双引号。如果使用双引号,则仅对特殊字符解析字符串。
答案 2 :(得分:12)
你在写'\n'
吗?因为\ n只有用双引号括起来才能正确解释:"\n"
。
偏离主题:<?=
语法是邪恶的。请不要为了团队中的其他开发人员而使用它。
答案 3 :(得分:0)
我刚刚跳过nl2br()
并以另一种方式使用了这个:
$post_content = str_replace('\n',"<br />",$post_content );
一切正常。
有关完整说明,请访问我的博客:
答案 4 :(得分:0)
<?php echo strip_tags('Dear<br/>Bidibidi'); ?>
Dear
Bidibidi
<?php echo nl2br('Dear
Bidibidi'); ?>
Dear<br/>Bidibidi
答案 5 :(得分:0)
替代@PascalMARTIN的回答
$string = stri_replace(array(
'<br>',
'<br/>',
'<br />',
), "\n", $string);
它不适用于像<br />
这样的多个空格,但这应该是非常罕见的情况。
答案 6 :(得分:0)
如果在输出html之前去除空格(用于缩小),"\n"
,"\r"
,PHP_EOL
等将被去除。 ASCII编码将在剥离过程中幸存下来。
function minify($buffer) {
return preg_replace('/\s\s+/', ' ', preg_replace('~>\s+<~', '><', $buffer));
}
ob_start('minify');
...
$nl = preg_replace('/\<br(\s*)?\/?\>/i', " ", $br);
echo "<textarea>{$nl}</textarea>";
...
ob_get_flush();