0

我有一个表单,我想在其中输入稍后将被组装成 HTML 文档的元素。我输入的内容以及最终需要的内容通常包括诸如 é、- 和相关元素之类的内容。编辑去为我转换了这些,这正是我想要避免的!我输入的示例是用于不间断空格 (ampersand-nbsp-semicolon)、带有尖音符的字母 e (ampersand-eacute-semicolon) 和 em-dash (ampersand-mdash-semicolon) 的 HTML 代码.

我需要保留这些字符串。我希望它们保存在数据库中,它们曾经存在,但是当我重新提交包含 20 个左右字段的页面时,因为我对其他字段进行了更改,然后我最终会呈现代码。但我不希望它呈现,我希望它保留,以便浏览器正确呈现我的最终文档。在第二次或第三次提交后,我总是在我的实体所在的地方得到垃圾。

我尝试了 mysql_real_escape_string()、htmlentities()、htmlspecialcharacters(),甚至 html_entity_decode(htmlentities()),但没有任何效果。我最终得到了各种程度的废话。

我不需要系统将 em-dash 或重音字符转换为实体,尽管这不会造成伤害。我只是希望它保留我输入的代码。

我该怎么做呢?(为什么工作这么多?)

这是表单域:

<textarea name="qih_quote" cols="75" rows="5" wrap="soft"><?php echo $s['qih_quote'];?></textarea>

这是提交脚本中的一行:

$qih_quote = $_POST['qih_quote'];

如上所述,我已经将 $_POST 变量包含在我能想到的所有内容中。我想要的只是将我放入该 textarea 的确切字符串保存在表格中,当我回到它时显示在 textarea 中,并随时再次保存到表格中而无需任何修改。

4

3 回答 3

1

好的,问题出在 textarea 表单中,我需要在那里对 HTML 实体进行编码。这是最终的解决方案:

<textarea name="qih_quote" cols="75" rows="5" wrap="soft"><?php echo htmlspecialchars ($s['qih_quote'], ENT_QUOTES);?></textarea>

于 2013-05-07T22:44:18.107 回答
1

尝试确保在保存数据的 MySQL 表中具有正确的排序规则,以便保留特殊字符,例如 utf8_general_ci,它应该处理 unicode。

然后在将数据保存到数据库时尝试使用 htmlspecialchars() 并在读取数据时尝试使用 htmlspecialchars_decode() 。

于 2013-05-07T09:07:22.467 回答
0

我认为任何有这个问题的人都可能想看看html_entity_decode而不是htmlspecialchars. 前者将所有 html 实体呈现为字符串,而后者仅适用于一小部分,至少根据我阅读的文档。

于 2015-09-05T13:04:51.020 回答