>基本上我有这个脚本,我正在尝试用<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]吗?