我想将html格式的文本保存到数据库,但是当我这样做时,它不会保存像<&lt;这样的html符号。 /&gt; ' 和别的 这就是我从数据库中读取文章进行编辑的方式:
<p class="Title">Англійський варіант:</p>
<textarea name="EN" cols="90" rows="20" value="<?php echo htmlentities($articleArr['EN'], ENT_QUOTES, "UTF-8"); ?>" ></textarea>
之后生成这样的html代码:
<p class="Title">Англійський варіант:</p>
<textarea name="EN" cols="90" rows="20" value="<p class='Title'> привыт </p>" ></textarea>
所以,我希望这个文本会出现在我的文本字段中,在这个页面的html代码中,但是在文本区域中没有。
在数据库中,我将其保存为:
<p class="Title"> Hello </p>
那我该如何做呢:
请帮帮我,如何妥善保存这些文本,Thanx!
答案 0 :(得分:33)
尝试使用字符串上的htmlspecialchars()
放入数据库,然后在将其拉出时使用htmlspecialchars_decode()
。可能会有所作为。
答案 1 :(得分:3)
将其保存到nvarchar(max)字段。
确保使用参数化查询以确保安全性。阅读
http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/
http://msdn.microsoft.com/msdnmag/issues/04/09/SQLInjection/
对Sql进行少许更改,您可以应用于Mysql aslo
答案 2 :(得分:0)
将您的 html 代码保存在数据库中没有问题。并且在保存之前不需要过滤数据。
但是当您想在 textarea
中再次显示它时,您应该Escape
它。
在 php 中,您可以使用此代码来转义 html 代码:
PHP 函数
<块引用>见文档:htmlspecialchars
$cotnent = htmlspecialchars( $cotnent );
Wordpress 功能:
<块引用>见文档:format_to_edit
$cotnent = format_to_edit( $cotnent , false );
或
<块引用>见文档:esc_textarea
$cotnent = esc_textarea( $cotnent );