如果我逃避一些代码,因为我希望它显示为html中的实际代码(例如,对于示例代码片段),将其保存到数据库然后将其拉回编辑器(html页面),它是显示为html,而不是转义文本。
当我在文本中包含textarea标签时,我的问题就出现了,因为它会过早地关闭编辑区域并切断保存时我写的其余部分(或者如果我不关闭标签则会更多)。 / p>
所以我的问题是:这是浏览器的预期行为吗? - >所以我需要逃避文本(代码和预标签)?每次我想改变它?或者我做错了什么?
*注意我是唯一一个使用它的人,它主要是为了学习,所以我并不担心安全方面,因为在浏览器中使用它时我需要处理我的html的方式它表现得很好。
答案 0 :(得分:1)
根据我的经验,你需要做一些特殊的角色转义。在PHP中,函数是htmlspecialchars()。我不知道其他功能。但浏览将正确显示textarea中的编码字符。
答案 1 :(得分:1)
@Bob:htmlentities()与htmlspecialchars()
不同htmlentities()会将具有ASCII代码的每个字符转换为该代码。 htmlspecialchars()只会执行HTML中特殊的那些,例如&,quotes和<或>
这是一个非常重要的区别,可能会破坏某些事情,并且在使用htmlentities()时也会导致结果巨大。
答案 2 :(得分:0)
大多数基于Web的语言都有一些用于转义HTML解释字符的库函数,因此请查看文档以了解您正在使用的语言。
就像Darryl所说,html_entities()(这是htmlspecialchars()的别名)将在PHP中发挥作用。
答案 3 :(得分:0)
这是浏览器的预期行为吗? 是的,浏览器将您的(未转义的)HTML代码解释为属于该页面的HTML标记并对其进行操作。
所以我需要转义文本(可能是代码和预标签)? 是的,正如Darryl Hein所说,使用htmlspecialchars()。它们将由浏览器正确显示,并且您无需在编辑过程中“取消”数据。
......我做错了什么? 您应检查进入您的应用程序或离开它的任何输入,并查看其中是否有任何字符可能对浏览器,数据库服务器以及解决方案的其他部分有特殊意义。你应该为每次交互正确地转义特殊字符(例如MySQL数据库的mysql_escape_string(),HTML的htmlspecialchars()等)。