【问题标题】:PHP FILTER_VALIDATE_EMAIL return different values on different machinesPHP FILTER_VALIDATE_EMAIL 在不同的机器上返回不同的值
【发布时间】:2014-04-16 07:16:13
【问题描述】:

我测试了电子邮件字段的表单验证器并输入了长电子邮件:

 $email = 'dfgjfdjglkdfjglkjdfgldfjglkdfjgkldfjlkgjdlkfjglkdfjkgdklfjgldkfjgldlfjgkldfjglkdfjglkdfklgjlkdfjkgkdfjlkgfjldkgkldjfgkljdfkgjlkdfgljdlf@mail.com';

在本地机器函数 filter_var 上返回带有电子邮件的字符串:

 $email = 'dfgjfdjglkdfjglkjdfgldfjglkdfjgkldfjlkgjdlkfjglkdfjkgdklfjgldkfjgldlfjgkldfjglkdfjglkdfklgjlkdfjkgkdfjlkgfjldkgkldjfgkljdfkgjlkdfgljdlf@mail.com';

 die(var_dump(filter_var($email, FILTER_VALIDATE_EMAIL)));

但在远程服务器上,此代码返回 FALSE。

本地机器上的 PHP 版本 - 5.3.2-1ubuntu4.22

在远程机器上 - 5.3.28

此版本的 PHP 之间是否更改了 filter_var 函数?为什么我使用相同的代码收到不同的值?

【问题讨论】:

标签: php filter-var


【解决方案1】:

FILTER_VALIDATE_EMAIL 自 5.3.2 以来已经更新了几次(你真的应该更新你的版本 BTW)。最值得注意的更新是 this bug-fix 在输入/验证地址过长时导致 seg-fault。
除了此修复(记录两次)之外,Rasmus Lerdof on FILTER_VALIDATE_EMAIL 返回误报。不过,AFAIKT,这不太可能是您的麻烦的原因。
其他一些更改包括涉及特殊字符的错误,例如 ?>1=
无论如何,要查看 PHP5.3.2 以来的所有更改,只需在他们的网站上查看 the changelog...

再次重申:更新您的本地版本,它已经过时了。鉴于您正在运行 ubuntu:

$ sudo apt-get install php5-dev
//optionally
$ sudo apt-get install php5-dev --install-suggests

如果你正在运行薄荷:

$ sudo apt-get install php5-dev --install-recommends --install suggests

在两个发行版上,最好先运行sudo apt-get update,当然...

【讨论】:

  • 感谢您的详细解答。
【解决方案2】:

PHP's changelog 上,您可以在您提到的版本之间看到至少两个问题(搜索 FILTER_VALIDATE_EMAIL )。这可能是进行更多搜索的起点。

那么更新本地 PHP 版本呢?你用的那个太旧了……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多