1

我有一个用 php 和 mysql 编写的客户管理系统。一家公司使用它来记录他们的客户详细信息以进行营销和订单。我的表单上有多个字段,其中之一是企业名称。

字段被导入电子邮件发送给客户报价等。字段内容从数据库中提取并存储在各种字符串中。例如,企业名称存储在$name.

我发现的问题是,如果企业输入企业名称,例如Joe Blogs & Sons导入电子邮件系统的结尾是什么Joe Blogs,就是它,在与号被切断后的任何内容,包括与号。如果他们使用Joe Blogs and Sons它可以正常工作,并且当电子邮件发出时它会说Dear, Joe Blogs and Sons,但如果有人输入&它只会以Dear, Joe Blogs.

我说类似 s 的话是正确的,tr_replace还是preg_replace这样做的方法或逃避&'s 的方法?.

4

3 回答 3

2

使用htmlentities()htmlspecialchars()编码特殊的 HTML 实体以注入 HTML 上下文。请注意,这些函数对于任何其他上下文都是不够的。例子:

好的:

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

坏的:

<a href="<?php echo htmlspecialchars($bar); ?>">Click me!</a>
于 2012-01-24T14:02:33.530 回答
0

尝试将 & 转换为&amp;. 有各种各样的 php 函数。选择一个适合你的

于 2012-01-24T13:57:08.330 回答
0

这取决于您所说的“导入电子邮件”是什么意思。

我想您只需要将&'s 转换为&amp;'s - 最好只在每个变量周围使用htmlentities(假设它们不包含需要解析的 HTML)作为“字符串清理”过程的一部分。

于 2012-01-24T13:58:36.327 回答