0

如果我转义一些代码,因为我希望它显示为 html 中的实际代码(例如,对于示例代码片段),将其保存到数据库,然后将其拉回编辑器(html 页面),它会显示为 html ,而不是转义文本。

当我在文本中包含一个 textarea 标签时会出现我的问题,因为它会过早地关闭编辑区域并在保存时切断我所写的其余内容(或者如果我不关闭标签则更多)。

所以我的问题是:这是浏览器的预期行为吗?-> 所以我需要转义文本(可能是代码和前置标签)?每次我想对其进行更改?还是我做错了什么?

*注意我是唯一使用它的人,它主要是为了学习,所以我并不担心安全方面,而是检查我在浏览器中使用它时需要处理我的 html 并让它运行的方式一种预期的方式。

4

4 回答 4

1

根据我的经验,您确实需要进行某种特殊字符转义。在 PHP 中,函数是 htmlspecialchars()。我不知道其他功能。但是浏览器会正确显示文本区域中的编码字符。

于 2008-10-24T07:09:03.697 回答
1

@Bob:htmlentities()htmlspecialchars()不同

htmlentities() 会将具有 ASCII 代码的每个字符转换为该代码。htmlspecialchars() 只会处理 HTML 中的特殊字符,例如 &、引号和 < 或 >

这是一个相当大的区别,它可能会破坏一些东西,并且在使用 htmlentities() 时也可能导致结果非常大。

于 2008-10-24T07:23:43.790 回答
0

大多数基于 Web 的语言都有一些用于转义 HTML 解释字符的库函数,因此请查看您正在使用的语言的文档。

就像 Darryl 说的,html_entities()(它是 htmlspecialchars() 的别名)将在 PHP 中发挥作用。

于 2008-10-24T07:10:56.593 回答
0

这是浏览器的预期行为吗? 是的,浏览器将您的(未转义的)HTML 代码解释为属于该页面的 HTML 标记并对其进行操作。

所以我需要转义文本(可能是代码和前置标签)? 是的,正如 Darryl Hein 所说,使用 htmlspecialchars()。它们将由浏览器正确显示,并且您无需在数据从编辑中返回时“取消转义”数据。

...难道我做错了什么? 您应该检查进入或离开应用程序的任何输入,并查看其中是否存在对浏览器、数据库服务器和解决方案的其他部分具有特殊意义的任何字符。您应该为每次交互正确转义特殊字符(即 MySQL 数据库的 mysql_escape_string(),HTML 的 htmlspecialchars() 等)

于 2008-10-24T09:19:34.603 回答