如何保持文本缩进与<textarea> </textarea>中写入的用户相同

时间:2013-04-02 17:45:43

标签: php html mysql forum

我正在使用php.my项目是建立一个论坛...一切都很好,除了onething ...我的网站上有一个<textarea>,用户可以通过该问题提出问题。 。现在使用insert into命令插入textarea中的任何用户和select命令来从数据库中获取帖子并使用echo命令显示它

问题:无法保持用户的文字缩进完整

假设用户已经写过

 #include<stdio.h>
 #include<conio.h>
 int main()
 {
    ...and so on;
  }

这个代码在文本区域,当我通过echo显示它然后输出就像

#include<stdio.h>#include<conio.h>int main(){...and so on;}

所以我的问题是如何保持用户文本缩进

编辑1:我的插入代码

<?php
include_once $_SERVER['DOCUMENT_ROOT'].'/include/db.inc.php' ;
$myemail=$z;
$sem=$_POST['semester'];
$course=$_POST['course'];
$title=$_POST['title'];
$desc=$_POST['question'];
$date=date('Y-m-d H:i:s');
$sem = mysqli_real_escape_string($link, $sem);
$course = mysqli_real_escape_string($link, $course);
$title = mysqli_real_escape_string($link, $title);
$desc = mysqli_real_escape_string($link, $desc);
$sql =  "INSERT INTO wbut_forum_posts SET post_title='$title',post_desc='$desc',course='$course',semester='$sem',post_by='$myemail',post_date='$date'";
if (!mysqli_query($link,$sql))
{
include_once "wall.html.php";
echo "<script language=javascript> alert(\"SOMETHING WENT WRONG, TRY AGAIN LATER !!!\");</script>"; 
exit();
}
else
{
include_once 'wall.html.php';
echo "<script language=javascript> alert(\"YOUR POST SUCCESSFULLY HAS BEEN POSTED\");        </script>";
exit();
}

5 个答案:

答案 0 :(得分:3)

不要使用直接文本区域,尝试使用像tinyMCE这样的WYSIWYG编辑器,在稍微使用设置后,您将能够创建用户输入的HTML,这样您就可以获得换行符到<br>标签和标签转换为&nbsp;(x4)或x8或任何你想要的。您还可以删除所有控件,使其不一定看起来像WYSIWYG编辑器。

编辑: WYSIWYG(所见即所得) - tinyMCE(http://www.tinymce.com/)就是这样一个编辑器。您可以按照其网站上的说明进行操作,但它基本上是从JS加载并使用其编辑器覆盖您的文本区域。当用户点击保存或其他任何内容时(你通过JS告诉tinyMCE用户已经完成),它会看到你看到的文本并将其转换为html,转换后的文本就是你存储在数据库中的文本。由于存储了html,因此保留了所有换行符和空格。像这样的工具确实需要一些JS技能来实现,尝试它并看看你遇到了什么问题。这是一种矫枉过正的解决方案。但是如果你正确设置了tinyMCE,它将让你完全控制存储在你数据库中的内容。

答案 1 :(得分:1)

将{E}包含在<pre>标记或包含white-space: prewhite-space: pre-wrap的任何标记中。也可以使用htmlspecialchars

答案 2 :(得分:1)

尝试这个并看看它是否有效

echo str_replace(array("\t","    "),"&nbsp;&nbsp;&nbsp;&nbsp;", $text);

也试试

echo nl2br($text);

答案 3 :(得分:0)

我想出了一个可能对你有用的更简单的选择。在表单onSubmit()上添加一个函数,它只会对文本区域进行编码,因此您可以在数据库中存储JS编码的文本,例如document.getElementById('textArea').value = encodeURI(document.getElementById('textArea').value);

然后你只需解析该文本就可以正确显示它,我相信php会使用urldecode()函数。虽然如果您需要将其转换为HTML以正确显示,您可能只需要执行一些regEx替换。

答案 4 :(得分:0)

好的解决方案是使用上面建议的编辑器。这很简单你只需要下载包,包括js,css等,然后用编辑器绑定你的textarea。我使用过ckeditor(http://ckeditor.com/)。 它的功能是它将您的测试转换为HTML。还提供更多功能,如字体颜色,字体大小下划线,粗体,斜体等等。你可以看一下。