转换回HTML字符

时间:2010-10-03 03:09:13

标签: php mysql html

我想将字符串转换为HTML实体/特殊字符,以便将其存储到MySQL数据库中。 例如,

这是它存储在MySQL数据库中的方式 V3008-02, WS1 Drain Fitting 1” Straight w/Silencer

当在浏览中呈现时显示
V3008-02,WS1 Drain Fitting 1“Straight w / Silencer

我的应用程序使用phpBMS包在PHP中构建。我想将渲染的文本转换回原始文本,以便我可以存储回数据库。

在旁注中,这是在数据库中存储HTML标记的最佳方法吗?

是吗

A 'quote' is <b>bold</b&gt

A 'quote' is <b>bold</b>

此致

3 个答案:

答案 0 :(得分:0)

http://us3.php.net/manual/en/function.htmlspecialchars-decode.php 这是你的问题的答案。

我不确定您应该如何存储HTML标记。显然,你不能以原始形式存储它们,并且将它们与特殊实体一起使用会很臃肿。我建议改为链接到一个可以访问的文件,其中包含HTML。

好的,你可以存储它们,但是你也应该使用http://us3.php.net/manual/en/function.addslashes.php这个功能。

我不认为在现场存储大块HTML是有效的;我想这取决于尺寸。

答案 1 :(得分:0)

我不建议在数据库中存储实体。即使对于要被视为纯文本的用户字段,我也会在输出之前立即将其转义。

但是,在这里,您似乎有一个受信任的HTML字符串(例如来自目录)。所以只需将其存储为:

V3008-02, WS1 Drain Fitting 1” Straight w/Silencer

或:

A 'quote' is <b>bold</b>

并将其直接转储到输出。没有理由使用&rdquo;,因为您应该能够直接使用您选择的Unicode编码(例如UTF-8)。

答案 2 :(得分:0)

内容应以原始格式存储在数据库中。例如:

<p>this is a paragraph</p>

应完全按照以下方式存储:

<p>this is a paragraph</p>

要使SQL注入不可能只是使用适当的转义函数转义输入字符串并清理数据(例如,如果它应该是一个整数,则执行(int)转换)。如果您正在使用框架,那么数据库层将为您完成。我以前也做自己的逃生功能,这很容易做到。

在HTML页面中显示时,应该使用htmlentities(或者例如Zend_View的转义方法)。只要数据库接受它们并且内容安全地输出到预先安装的XSS等,就没有迫切的理由为什么人们不接受在数据库中存储特殊字符。

我的论点背后的想法是内容应该可以“出口”任何平台/地方。因此,如果它是HTML页面,您将使用htmlentities(),如果它是CSV文件,您将使用CSV导出功能来处理该文本等。