我有一个客户管理系统,我已经用php和mysql编程。一家公司用它来记录客户的详细信息,以便进行市场营销和订购。我的表格上有很多字段,其中一个是企业名称。
这些字段被导入一个电子邮件发送给客户报价等。字段内容从数据库中提取并存储在不同的字符串中。例如,业务名称存储在$name中。
我发现的问题是,如果企业输入了一个企业名称,比如Joe Blogs & Sons导入电子邮件系统的结果是Joe Blogs,也就是说,在与号被切断之后的任何内容,包括与号。如果他们使用Joe Blogs and Sons这个功能很好,当电子邮件发送出去时,它会显示Dear, Joe Blogs and Sons,但是如果有人输入&,它最终会显示为Dear, Joe Blogs
我说的像str_replacepreg_replace这样的话是正确的吗?是这样做的方式还是逃避&的方式?.

最佳答案

使用htmlentities()htmlspecialchars()对特殊的HTML实体进行编码,以便注入到HTML上下文中。请注意,这些函数不足以用于任何其他上下文。例子:
好的:

<p><?php echo htmlspecialchars($foo); ?></p>

坏的:
<a href="<?php echo htmlspecialchars($bar); ?>">Click me!</a>

10-08 04:01