文本字段中的&符号正在显示字段数据

时间:2012-01-24 13:53:40

标签: php mysql escaping ampersand

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

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

我发现的问题是,如果企业输入了一个商家名称,例如Joe Blogs & Sons,导入电子邮件系统的内容是Joe Blogs,那就是&符号被截断后的任何内容,包括&符号。如果他们使用Joe Blogs and Sons这可以正常工作,当电子邮件发出时会显示Dear, Joe Blogs and Sons,但如果有人输入&,则最终会显示为Dear, Joe Blogs

我是否正确地说s tr_replacepreg_replace这样的方式是采用这种方法还是逃避&的方法?

3 个答案:

答案 0 :(得分:2)

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

不可

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

<强>为:

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

答案 1 :(得分:0)

尝试转换&amp;进入&amp;。 有各种各样的PHP功能。选择适合你的那个

答案 2 :(得分:0)

这取决于“导入电子邮件”的含义。

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