[英]Handling HTML entities in contenteditable divs
我正在使用一个内容可编辑的<div>
编辑电子邮件(特别是使用NicEdit )。 我希望能够以某种形式提交消息正文,使用PHP处理它,并使用mail()
函数(或PHPMailer )发送它。
我遇到的问题与特殊字符和编码有关。 当在div中键入诸如π
或á
这样的特殊字符时,它保持不变,而不是转换为π
这样的html实体π
或á
。 在某些情况下会对其进行转换,例如<
到<
。
因此,提交表单时,PHP接收的数据很难处理。 写作
pi is "less than" 2 × pi:
π < 2π
将以下数据放入contenteditable div中
<div>pi is "less than" 2 × pi:</div>
<div>π < 2π</div>
这就是PHP所收到的。 但是使用htmlentities()
<div>pi is "less than" 2 × pi:</div>
<div>π < 2π</div>
除HTML标记外,这是正确的,因此此方法似乎无用。 最初接收到的数据可以插入数据库(我认为)很好,但是当我尝试将其作为电子邮件发送时,编码混乱了。
从我的角度来看,解决方案似乎是对HTML标签之外的实体进行编码,以得到如下所示的内容:
<div>pi is "less than" 2 × pi:</div>
<div>π < 2π</div>
但是从Google和StackOverflow进行搜索看来,这似乎是一件坏事。 因此,我认为我一定在某种程度上对编码做错了,无论是在发送电子邮件之前还是在发送带有可编辑内容的原始数据之前。 我正在寻找一种可行的解决方案,理想情况下,它不需要像HTMLPurifier这样的复杂库。
有任何想法吗?
编辑:我尝试过此解决方案将特殊字符不在标记中时将其转换为html实体。 当我尝试输入π
类的特殊字符时,这似乎很好用。 但是来自该链接的答案已被否决, 类似的答案表示该方法从根本上是错误的。 谁能告诉我这是为什么,为什么我不应该坚持htmlentitiesOutsideHTMLTags
?
只是一个想法:
<div> <b></b> </div>
为[div] [b] [/ b] [/ div] <div> <b> </b> </div>
顺便说一句,我认为您可以在步骤1之前使用strip_tags()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.