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

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

所以我的问题是:这是浏览器的预期行为吗?-> 所以我需要转义文本(也许是代码和预标记)?每次我想对其进行更改时?或者我做错了什么?

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

有帮助吗?

解决方案

@Bob: htmlentities() htmlspecialchars()

htmlentities()会将具有ASCII代码的每个字符转换为该代码。 htmlspecialchars()只会执行HTML中特殊的那些,例如&,quotes和<或>

这是一个非常重要的区别,可能会破坏某些事情,并且在使用htmlentities()时也会导致结果巨大。

其他提示

根据我的经验,你需要做一些特殊的角色转义。在PHP中,函数是htmlspecialchars()。我不知道其他功能。但浏览将正确显示textarea中的编码字符。

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

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

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

所以我需要转义文本(也许是代码和预标记)?是的,正如 Darryl Hein 所说,使用 htmlspecialchars()。它们将由浏览器正确显示,并且您不需要在数据从编辑返回时“转义”数据。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top