我有一个客户管理系统,我已经用php和mysql编程。一家公司用它来记录客户的详细信息,以便进行市场营销和订购。我的表格上有很多字段,其中一个是企业名称。
这些字段被导入一个电子邮件发送给客户报价等。字段内容从数据库中提取并存储在不同的字符串中。例如,业务名称存储在$name
中。
我发现的问题是,如果企业输入了一个企业名称,比如Joe Blogs & Sons
导入电子邮件系统的结果是Joe Blogs
,也就是说,在与号被切断之后的任何内容,包括与号。如果他们使用Joe Blogs and Sons
这个功能很好,当电子邮件发送出去时,它会显示Dear, Joe Blogs and Sons
,但是如果有人输入&
,它最终会显示为Dear, Joe Blogs
。
我说的像str_replace
或preg_replace
这样的话是正确的吗?是这样做的方式还是逃避&
的方式?.
最佳答案
使用htmlentities()
或htmlspecialchars()
对特殊的HTML实体进行编码,以便注入到HTML上下文中。请注意,这些函数不足以用于任何其他上下文。例子:
好的:
<p><?php echo htmlspecialchars($foo); ?></p>
坏的:
<a href="<?php echo htmlspecialchars($bar); ?>">Click me!</a>