0

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

 $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 函数?为什么我使用相同的代码收到不同的值?

4

2 回答 2

1

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

再次:更新您的本地版本,它已经过时了。鉴于您正在运行 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当然最好先运行...

于 2014-03-12T09:18:01.167 回答
0

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

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

于 2014-03-12T09:21:11.547 回答