我正在使用一个有意义的<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>
但是从谷歌和StackOverflow上搜索这似乎是一件坏事。因此,我认为我必须在某些时候对编码做错,无论是在发送电子邮件之前还是在回复原始的可信数据之前。我正在寻找一个有效的解决方案,理想情况下没有像HTMLPurifier这样复杂的库。
有什么想法吗?
编辑:我已尝试this solution将特殊字符转换为html实体(如果它们不在标记中)。当我尝试输入π
这样的特殊字符时,这似乎很有效。但该链接的答案已被否决,a similar answer表示这种方法根本就是错误的。谁能告诉我为什么会这样,为什么我不应该坚持使用htmlentitiesOutsideHTMLTags
?
答案 0 :(得分:0)
只是一个想法:
<div> <b></b> </div>
转换为[div] [b] [/ b] [/ div] <div> <b> </b> </div>
顺便说一句,我认为您可以在步骤1 ...
之前使用strip_tags()