PHP 将文字 替换为 <br/>(不替换新行)


PHP replacing literal with <br/> (not replacing new lines)

>基本上我有这个脚本,我正在尝试用<br />替换文字文本'r'n以正确格式化。我试过nl2br(),它没有用<br />代替'r'n.这是代码。

$title = isset($post[0]) ? $post[0] : false;
$body = isset($post[1]) ? preg_replace('#('r|'r'n|'n)#', '<br/>', $post[1]) : false;
echo $title."<br/>".$body;  
$body = isset($post[1]) ? preg_replace('#('''r|'''r'''n|'''n)#', '<br/>', $post[1]) : false;

您将需要三个'''。在单引号内,''转换为'因此'''r变成''r,从而馈送到preg_replace功能。

PREG引擎有自己的一组转义序列,'r是其中之一,这意味着ASCII字符#13。要告诉 PREG 引擎搜索文字'r,您需要传递字符串''r,因为您需要再次转义该字符串,因为它位于单引号内。

如果它在 html 中显示'r'n,这意味着它们不是换行符和换行符,而是转义的反斜杠,后跟 r 或 n(例如''r(。 您需要去除这些斜杠或更新正则表达式以考虑它们。

你可以试试这个:

$body = nl2br(strtr($post[1], array(''r' => chr(13), ''n' => chr(10))));

尝试使用 str_replace(( 函数

$title = isset($post[0]) ? $post[0] : false;
$body = isset($post[1]) ? str_replace(array(''r'n', ''r', ''n'), '<br/>', $post[1]) : false;
echo $title."<br/>".$body;

当我阅读问题的评论时,我建议尝试以下代码:

$title = isset($post[0]) ? $post[0] : false;
$body = isset($post[1]) ? preg_replace('#(''r''n|''r|''n)#', '<br/>', $post[1]) : false;
echo $title."<br/>".$body;
正如

@tandu提到的,如果您在html中看到'r'n,那么在应用nl2br()之前,您需要先使用stripslashes()。如果数据来自表单,则会自动添加斜杠。

所以你的代码将变成:

$title = isset($post[0]) ? nl2br(stripslashes($post[0])) : false;
$body = isset($post[1]) ? nl2br(stripslashes($post[1])) : false;
echo $title."<br/>".$body;

希望有帮助。

编辑:唰。只是另一个想法。你应该使用$_POST[0]和$_POST[1]吗?