我有一个textarea。用户将文本输入到textarea中,该文本区域可以包含用于格式化的换行符。我将此文本保存为mySQL数据库,而不添加HTML br中断。这看起来像“文字等等。\ n \ nText2等等等等。”在数据库记录中。
我使用echo nl2br($text);
在常规HTML页面上显示文本,文本格式正确,两个换行符显示为两个句子,两个句子之间有一个空行。
当我将相同的文本发送到预先填充以供用户编辑其原始条目的textarea时,我使用以下代码:
<textarea><?php echo $text;?></textarea>
我希望我能得到一个textarea文本,其中包含存储在数据库中的一些双重换行符。在这种情况下我不使用nl2br,因为这样做只是字面上显示HTML字符(实际上并不创建换行符 - 换句话说,向用户显示br的6个字符)。相反,我得到的是剥离任何双重新线,因此背靠背的两条新线现在是单个新线。单个新线路不会被完全剥离 - 它们只保留一条新线路。
因此,简而言之,当我发送带有格式的文本时,应该在文本行之间包含一个空行,我得到的只是单个新行,打破了文本的重要格式。)
如何在将文本从数据库输出到textarea时保留所有换行符?
答案 0 :(得分:1)
这对我有用:
<?php
$txt = "line1\nline2\n\nline4\nline5";
?>
<html>
<body>
<form>
<textarea rows=10><?php echo $txt ?></textarea>
</form>
</body>
</html>
请注意缺少line3
文字和双\n\n
。在Firefox中加载此表单会在line2 / line4文本之间给出一个空白行,如预期的那样。
检查您的文本是否在其他地方没有被破坏,并且确实在数据库中作为双线中断。
答案 1 :(得分:1)
您可以尝试... echo str_replace(&#34; \ n&#34;,&#34; \ r \ n&#34;,$ txt)
这个简单的读取换行符并将它们转换为textareas清楚理解的新行:)希望这会有所帮助。
感谢。
答案 2 :(得分:0)
我遇到了同样的问题,但经过一些故障排除我的调查结果如下:
所有textareas都显示\ n \ n,如果来自db,session或cookie,则无论是否为值,都会显示换行符。
但是如果HTML页面是MINIFIED,那么空行会在最终HTML缩小时消失。支持减少页面大小的空格从文档中清除空白。
检查实际的HTML会证明这一点。
我在输出缓冲区使用我的OWN minify函数,所以我只为该页面包含了一个例外。
=&GT;我的意思是不要点击持有重要文本区域的页面!
标题中的PHP代码将是这样的:
$minify_exceptions = array(
"page1.php",
"page2.php"
);
if (isset($file_route) && in_array($file_route, $minify_exceptions)) {
ob_start();
} else {
ob_start("minify_html");
}
注意: 这个代码没有任何作用。如果您有任何第三方HTML缩小器,或通过另一个服务器管道输入的HTML,例如您需要为某个页面(MINIFY发生的地方)找到例外列表的Google Page Speed
P.S。更智能的方法是增强您的MINIFY功能,而不是在textarea标签之间使用MINIFY文本