3

目前我正在存储文本区域段落

<textarea rows="10"></textarea>

我可以保存整个内容,但问题是它不包括换行符。我想知道将空格/换行符从文本区域存储到数据库的最佳做法是什么。另外,我需要防止用户在文本区域内插入。

是好东西吗?

e.g.
text=replace(text,"/n","<br>")
text=replace(text," ","&nbsp;") 
text=replace(text,"<script>","") 
text=replace(text,"</script>","") 

谢谢

4

3 回答 3

5

它确实存储换行符,但是当您以 HTML 格式输出时,您看不到它。使用nl2br()函数将换行符转换为<br />标记,以便您可以在 HTML 中看到换行符。

如果你想阻止文本中的一些 HTML 标签 - 使用strip_tags()功能(如果你愿意,你可以允许一些标签)。并且不要忘记使用mysql_real_escape_string()或类似的东西来转义数据。

于 2013-09-30T02:07:41.797 回答
3

除了保罗建议的另一种选择是

  1. 使用<pre>实际上用 /n 制动行的标签 .. 这样您就不需要操作文本 .. 您将不得不自定义<pre>块的样式,因为默认值类似于控制台字体和样式。
  2. 使用带有自定义样式的禁用标签来避免对文本的操作。

这是显示两个示例的小提琴(我使用 JS 来注入值,但是当您从 PHP 注入时它也应该可以工作):http: //jsfiddle.net/BvynR/

<pre id="pre">   
</pre>
<textarea id="textarea" disabled="disabled">
</textarea>


var str = "Hello I'm a pre-formatedt text \nand this is a new line";
$("#pre").html(str);

$("#textarea").text(str);


#pre
{
    font-family: verdana,helvetica,arial,sans-serif;
    font-size:1em;
}

#textarea
{
    font-family: verdana,helvetica,arial,sans-serif;
    font-size:1em;
    width:100%;
    border:none;
    background: none;
}
于 2013-09-30T02:10:17.027 回答
1

如果是我,我会按照您从用户那里收到的数据插入数据。这是因为您可能需要在将来的某个时间提取该数据,而不是将其保存在 HTML 中 - 例如用于报告或放入电子表格或其他内容。

当然,您需要格外小心地提取数据并将其显示在页面上 - 但无论如何您都应该这样做,并且您不想依赖于您的输入环境是完美的 - 您可能需要替换/将来更新它。

于 2013-09-30T02:14:18.527 回答