5 回答
尝试使用像 tinyMCE 这样的 WYSIWYG 编辑器,而不是使用直接文本区域,在稍微调整设置后,您将能够使用它来创建用户输入内容的 HTML,因此您可以获得换行符以转换为<br>
标签和选项卡转换为
(x4) 或 x8 或任何你想要的。您还可以删除所有控件,使其看起来不一定像 WYSIWYG 编辑器。
编辑:所见即所得(所见即所得)- tinyMCE(http://www.tinymce.com/)就是这样的编辑器之一。您可以按照他们网站上的说明进行操作,但它基本上是从 JS 加载并使用他们的编辑器覆盖您的文本区域。当用户单击保存或其他任何操作(您通过 JS 告诉 tinyMCE 用户已完成)时,它将按照您看到的方式获取他们的文本并将其转换为 html,转换后的文本就是您将存储在数据库中的内容。由于存储的是 html,因此所有换行符和空格都被保留。像这样的工具确实需要一些 JS 技能来实现,尝试一下,看看你会遇到什么问题。这是一种矫枉过正的解决方案。但是,如果您正确设置了 tinyMCE,它将让您完全控制存储在数据库中的内容。
试试这个,看看它是否有效
echo str_replace(array("\t"," ")," ", $text);
也试试
echo nl2br($text);
用<pre>
标签或任何带有white-space: pre
or的标签来回显它white-space: pre-wrap
。也用htmlspecialchars
在上面。
好的解决方案是使用上面建议的编辑器。这很容易,您只需下载包,包括 js、css 等,然后将您的 textarea 与编辑器绑定。我用过 ckeditor(http://ckeditor.com/)。它的作用是将您的测试转换为 html。还提供更多功能,如字体颜色、字体大小下划线、粗体、斜体等等。你可以看看这个。
我刚刚想出了一个更简单的替代方案,可能对你有用。向您的表单 onSubmit() 添加一个函数,该函数将简单地对您的文本区域进行编码,以便您将 JS 编码的文本存储在您的数据库中,例如document.getElementById('textArea').value = encodeURI(document.getElementById('textArea').value);
然后你只需要解析该文本以正确显示它,我相信 php 使用 urldecode() 函数。虽然如果您需要将其转换为 HTML 以正确显示,您可能只需要进行一些 regEx 替换。