2011-07-13 31 views
1

我有一个需要别人名字的表单。这是一个基本的正则表达式,只需要字母和撇号。所以当我在字符串Conan O'Brien上执行mysql_real_escape_string()时,Conan O'Brien被存储。如何在mysql_real_escape_string()之后处理爱尔兰人(例如O'Brien,O'Connor)?

当我想发送一封自动发送的电子邮件时,它会发送给柯南奥布莱恩而不是柯南奥布莱恩。

如何处理这种特殊情况的最佳方法是什么?

我以为我可以在执行mysql_real_escape_string()并将人员插入数据库之前删除\。或者我也可以在数据库中留下反斜杠,但每次发送电子邮件时都要将反斜杠移除。

+3

看起来就像是在逃避两次 - 这会有助于向我们展示更多的代码,或许从php.ini中获得相关设置 –

+1

像Rowland说的,如果你的数据库中有'\'''两次转义数据。你有开启PHP设置'magic_quotes_gpc'吗? –

回答

4

当你想显示它时,我会使用stripslashes()。您可以在检索用户对象后立即剥去斜杠,但请记住,如果您使用javascript或HTML输出名称,则可能需要将其重新转义,因为这可能会导致引号不平衡。

2

最好的解决方案是使用预处理语句,因为没有字段值必须转义。例如,稍后您将邮件正文化。

+0

这个。我正要消化这件事 – Ryan

相关问题