【问题标题】:save html-formatted text to database将 html 格式的文本保存到数据库
【发布时间】:2011-06-02 10:48:38
【问题描述】:

我想将 html 格式的文本保存到数据库,但是当我这样做时,不要保存 html 符号,如 > ' 和其他 这就是我从数据库中读取文章进行编辑的方式:

<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="&lt;p class=&#039;Title&#039;&gt; привыт &lt;/p&gt;" ></textarea>

所以,我希望这个文本会出现在我的文本字段中,在这个页面的 html-code 中它是,但在文本区域中没有。

在数据库中我将​​其保存为:

<p class="Title"> Hello </p>

那么我该怎么做:

  1. 从数据库中读取 html 格式的文本。
  2. 在 textarea 元素中显示它。
  3. 编辑并将其保存回数据库。

请帮帮我,我怎样才能正确保存这些文本,谢谢!

【问题讨论】:

  • 你确定它不保存像 >这样的html-symbols吗?
  • 对于其他符号,例如 ' 或 \ ,对于您放入查询中的每个变量,始终使用 $ParentName = mysql_real_escape_string($ParentName); 等等
  • Textarea 有开始标签和结束标签。并且没有值属性。
  • 嘿,他是对的,没有发现这一点。 Textareas 的工作方式与大多数表单输入不同。看起来像这样 &lt;textarea name="textarea"&gt;Stuff Goes In Between the Tags&lt;/textarea&gt; 而不是 &lt;textarea name="textarea" value="Stuff doesn't go in value"&gt;&lt;/textarea&gt;
  • 哦,另外,标签之间的东西是它的值,它都被放入 $_POST 或 $_GET 或任何文本区域元素的名称中。因此,&lt;textarea name="comments"&gt;Blah blah blah blah blah&lt;/textarea&gt; 将是 $_POST['cmets'] 并且等于“Blah blah blah blah blah”。如果你有一个字符串 $string = "Blah blah blah blah blah" 并输出 echo '&lt;textarea name="comments"&gt;'.$string.'&lt;/textarea&gt;'; 那么你会得到一个预填有 "Blah blah blah blah blah" 的文本区域。

标签: php html phpmyadmin


【解决方案1】:

尝试在要放入数据库的字符串上使用htmlspecialchars(),然后在将其拉回时使用htmlspecialchars_decode()。可能会有所作为。

【讨论】:

  • 某些字符在 HTML 中具有特殊意义,如果要保留其含义,则应由 HTML 实体表示。该函数返回一个字符串,其中包含一些转换;所做的翻译是那些对日常网络编程最有用的。如果您需要翻译所有 HTML 字符实体,请改用 htmlentities()。
【解决方案2】:

将其保存到 nvarchar(max) 字段。

确保使用参数化查询以确保安全。阅读

http://www.aspnet101.com/2007/03/parameterized-queries-in-asp-net/

http://msdn.microsoft.com/msdnmag/issues/04/09/SQLInjection/

对 Sql 稍加改动,也可以应用到 Mysql

【讨论】:

    【解决方案3】:

    将您的 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 );
    

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多