我正在使用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();
}
答案 0 :(得分:3)
不要使用直接文本区域,尝试使用像tinyMCE这样的WYSIWYG编辑器,在稍微使用设置后,您将能够创建用户输入的HTML,这样您就可以获得换行符到<br>
标签和标签转换为
(x4)或x8或任何你想要的。您还可以删除所有控件,使其不一定看起来像WYSIWYG编辑器。
编辑: WYSIWYG(所见即所得) - tinyMCE(http://www.tinymce.com/)就是这样一个编辑器。您可以按照其网站上的说明进行操作,但它基本上是从JS加载并使用其编辑器覆盖您的文本区域。当用户点击保存或其他任何内容时(你通过JS告诉tinyMCE用户已经完成),它会看到你看到的文本并将其转换为html,转换后的文本就是你存储在数据库中的文本。由于存储了html,因此保留了所有换行符和空格。像这样的工具确实需要一些JS技能来实现,尝试它并看看你遇到了什么问题。这是一种矫枉过正的解决方案。但是如果你正确设置了tinyMCE,它将让你完全控制存储在你数据库中的内容。
答案 1 :(得分:1)
将{E}包含在<pre>
标记或包含white-space: pre
或white-space: pre-wrap
的任何标记中。也可以使用htmlspecialchars
。
答案 2 :(得分:1)
尝试这个并看看它是否有效
echo str_replace(array("\t"," ")," ", $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。还提供更多功能,如字体颜色,字体大小下划线,粗体,斜体等等。你可以看一下。