2012-07-14 174 views
1

我有一个textarea。用户将文本输入到textarea中,该文本可以包含用于格式化的换行符。我将这段文本保存到mySQL数据库中,而不添加HTML br中断。这看起来像“文字等等等等。\ n \ nText2等等等等。”在数据库记录中。PHP,mySQL,换行符和textareas

我使用echo nl2br($text);在常规HTML页面上显示文本,文本格式良好,两行换行显示为两个句子,并在它们之间留有空行。

当我发送相同的文字预填充用户一个文本编辑他们的原始入口,我使用下面的代码:

<textarea><?php echo $text;?></textarea>

我希望我会得到充满文字textarea的是包括存储在数据库中的一些双行换行符。在这种情况下,我不使用nl2br,因为这样做只会字面上显示HTML字符(实际上不会创建换行符 - 换言之,会向用户显示br的6个字符)。相反,我得到的是剥离任何双重新线条,所以两条新线路背对背现在是单线新线路。单一的新生产线并没有完全被剥离 - 他们只保留单一的新生产线。所以,简而言之,当我发送带有应该在文本行之间包含空白行的格式的文本时,我得到的只是单个新行,打破了文本的重要格式)。

从数据库输出文本到textarea时,如何保留所有换行符?

回答

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文本之间留出空行。

检查您的文本是否在其他地方没有被损坏,并且确实在数据库中是双线断点。

+0

现在我有点误解了...我将你的代码直接复制到我的(完全跳过数据库),我有4行文本没有空行3.我看了看CSS和空白属性没有被我定义(浏览器默认是白色空间:预先包装;在IE和Chrome中看起来相同) - 这可能是问题吗? – key2starz 2012-07-14 22:21:23

+0

也尝试过FF - 同样的故事,并尝试改变空白的CSS属性。尽管\ n \ n - PHP的设置可能是罪魁祸首,但输出绝对没有两个换行符? – key2starz 2012-07-14 22:29:23

+0

确认您的代码是按原样工作的 - 在将HTML加载到文本框后,必须修改我的HTML ...时间筛选JS并查看是否有任何内容被删除... – key2starz 2012-07-14 22:46:14

1

你可以试试...回声str_replace函数(“\ n”,“\ r \ n”,$ TXT)

这个简单的读取换行符并将它们转换中明确由文字区域了解新行:) 希望这可以帮助。

谢谢。

0

我有同样的问题,但有些故障排除后,我的结论是:

所有文字区域显示\ n \ n与换行符不管价值,如果从数据库中,会话或cookie的到来。

但是,如果HTML页面被MINIFIED,空白行消失,因为最终的HTML被缩小。有利于减少页面大小的空格从文档中清除。

检查实际的HTML会证明这一点。

我使用我的OWN minify函数与输出缓冲区,所以我只包含该页面的一个例外。

=>我的意思是不要将拥有重要textarea的页面monify!

在标题中的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"); 
} 

注: 独此代码nothing.If您有任何第三方的HTML minifier,或者HTML通过其他服务器例如管道谷歌网页速度你需要找到一个地方的例外列表(发生MINIFY)

P.S.更聪明的方法是增强您的MINIFY功能,而不是MINIFY文本之间的textarea标签