基本上我有这个脚本,我正在尝试用\r\n
替换<br />
以获得正确的格式。我已尝试nl2br()
,但未将\r\n
替换为<br />
。这是代码。
$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;
答案 0 :(得分:16)
$body = isset($post[1]) ? preg_replace('#(\\\r|\\\r\\\n|\\\n)#', '<br/>', $post[1]) : false;
您需要三个\\\
。在单引号内,\\
会转换为\
,因此\\\r
变为\\r
,会被preg_replace
函数提供。{/ p>
PREG引擎有自己的一组转义序列,\r
就是其中之一,这意味着ASCII字符#13。要告诉PREG引擎搜索文字\r
,您需要传递需要再次转义的字符串\\r
,因为您将其放在单引号内。
答案 1 :(得分:3)
如果它在您的html中显示\r
和\n
,则表示这些不是换行符和换行符,而是转义后的反斜杠,后跟r或n(\\r
例如)。您需要删除这些斜杠或更新正则表达式来解释它们。
答案 2 :(得分:1)
正如@tandu所提到的,如果你在html中看到\r
或\n
,那么在应用stripslashes()
之前,你需要先使用nl2br()
。如果您的数据来自表单,则会自动添加斜杠。
所以你的代码会变成:
$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]吗?
答案 3 :(得分:1)
当我阅读问题的评论时,我建议尝试使用以下代码:
$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;
答案 4 :(得分:1)
你可以试试这个:
$body = nl2br(strtr($post[1], array('\r' => chr(13), '\n' => chr(10))));
答案 5 :(得分:1)
尝试str_replace()功能
$title = isset($post[0]) ? $post[0] : false;
$body = isset($post[1]) ? str_replace('\r\n', '<br/>', $post[1]) : false;
echo $title."<br/>".$body;