Php 如何在textarea表单帖子中保留空格和格式?

Php 如何在textarea表单帖子中保留空格和格式?,php,html,Php,Html,我试图发布一个文本区域,我将其存储到我的数据库中,我希望保留所有的空白,以便我可以查询出来并显示在不同的位置。这里的问题是,当表单提交时,整个文本区域作为一行发送。我已经研究了htmlspecialchar和urlencode,但是如果这是使用它们的正确地方,那么如何在这里应用它们呢 <form name = "exam" action="takeTest.php" method="post"> <textarea name="pa1" required rows=10

我试图发布一个文本区域,我将其存储到我的数据库中,我希望保留所有的空白,以便我可以查询出来并显示在不同的位置。这里的问题是,当表单提交时,整个文本区域作为一行发送。我已经研究了htmlspecialchar和urlencode,但是如果这是使用它们的正确地方,那么如何在这里应用它们呢

<form name = "exam" action="takeTest.php" method="post">
    <textarea name="pa1" required rows=10 cols=55>public int add(int a, int b){






    }
    </textarea>
    <input type="submit">
</form>

公共整数相加(整数a、整数b){
}
编辑

尝试使用pre标记,但这些标记仅显示为代码之外的默认文本。我认为在进行单元测试时,添加\n标记会弄乱代码,但我将尝试一下


我表单的这一部分是编程部分,它试图模拟codingbat所做的工作。

就像@Danny所说的那样,行是分开的,但不像您所期望的那样,是用HTML换行符分开的

要将换行符(
\n
)转换为HTML换行符(

),只需使用;因此,您可以在适当的HTML中使用数据库中的字符串

它转换为:

Hey\nthere
进入:

Hey<br>there

在插入数据库之前,php有一个函数
nl2br()
。 然后,如果您要回显body上的数据,只需在textarea中再次打印else以进行编辑,请使用此

function br2nl($string)
{
    return preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
} 
函数br2nl($string)
{
返回preg\u replace('/\/i',“\n',$string);
} 

如果你是这个意思的话,每一行都将用
\n
分隔开?这实际上是从我的php代码中提取的,所有这些实际上都在$pageContent之后。='在这里我稍后回显$pageContent谢谢你的链接mario!准备尝试用tagsI包装,我担心这可能会干扰单元测试,因为我将在编译输入后运行它,但我会给它一个快照,这就是它的用途。如果需要呈现HTML,请使用该函数;如果需要其他内容,请创建自己的(可能使用简单的字符串替换),但底线是行已经存在,您不必担心。只需阅读您的更新:如您所说,无需放置任何\n标记。它们自动存在。我的意思是,如果您想以HTML格式输出,只需使用
echo nl2br($your_text_var)
function br2nl($string)
{
    return preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
}