【问题标题】:Prevent HTML character codes from being rendered in textarea防止 HTML 字符代码在 textarea 中呈现
【发布时间】:2010-06-08 02:05:34
【问题描述】:

是否可以将存储在 SQL 文本字段中的 HTML 字符代码显示到文本区域而不将它们呈现为适当的字符?我没有 & 显示为 & (它存储在表中的方式)。或者他们是我应该存储 HTML 的一种方式,所以我不需要担心这个?

(网站使用 PHP)

【问题讨论】:

  • 抱歉,您的错字导致问题不清楚:您的数据库正在存储“&”并且您希望“&”显示在 textarea 中,或者您的数据库正在存储“&”你想要“&”出现?

标签: php sql textarea character-codes


【解决方案1】:

在 PHP 中,您可以使用函数 htmlspecialchars (http://php.net/manual/en/function.htmlspecialchars.php):

<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new;
?>

它会渲染:

&lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;

如果你想把它们解码回来,你只需使用函数 htmlspecialchars_decode

<?php
$str = '<p>this -&gt; &quot;</p>';

echo htmlspecialchars_decode($str);

// note that here the quotes aren't converted
echo htmlspecialchars_decode($str, ENT_NOQUOTES);
?>

【讨论】:

  • 谢谢,在我发布问题几分钟后,我实际上已经想到了这一点,但感谢您的回复。
【解决方案2】:

您所说的称为 HTML 编码;每种现代语言在其库中都有执行此操作的工具,例如 PHP 中的 htmlspecialchars 函数。如需更多 PHP 信息,请参阅this SO question

您还应该确保正确地清理输入,即使是针对多轮 HTML 解码;否则您将容易受到CSS(跨站脚本)攻击。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多