使用PHP的FILTER_VALIDATE_EMAIL
时允许的字符的最大长度是多少?PHP FILTER_VALIDATE_EMAIL最大长度
我正在测试脚本以测试允许的最大长度(200)的函数,但是当我使用超过200个字符的电子邮件时,PHP的FILTER_VALIDATE_EMAIL
返回false。
使用PHP的FILTER_VALIDATE_EMAIL
时允许的字符的最大长度是多少?PHP FILTER_VALIDATE_EMAIL最大长度
我正在测试脚本以测试允许的最大长度(200)的函数,但是当我使用超过200个字符的电子邮件时,PHP的FILTER_VALIDATE_EMAIL
返回false。
如果电子邮件真的有效,那么它应该适用于您的200多个字符的电子邮件数据。你确定你正在提供一个有效的电子邮件吗?
条件有效的电子邮件:
电子邮件地址的最大长度为254个字符。
每个电子邮件地址由两部分组成。本地部分出现在“@”符号之前,域部分跟随它。在“[email protected]”中,本地部分是“用户”,域部分是“example.com”。
本地部分不能超过64个字符,并且
域部分不能超过255个字符长;
但是,所有字符(包括'@'和标点符号)的总长度不能超过254个字符。
总之,电子邮件地址最多可以是254个字符。创建地址时,请确保您的用户名少于65个字符(如果该域最多为188个字符)。
这就是我正在寻找的东西。原来,这是因为我正在测试一个长度超过64个字符的“本地部分”。 –
叶普,与当地的信息非常有帮助! – Basster
看起来'域可以长达254个字符'部分是不正确的。这里是我的测试数据
<?php
$str = 'garahasgcdotrrriefvdqvegtartfhpnlwizanrhcqirnqllicyjhttvdylvkqccpljzrgledgqpjbttgwbqwgtkytkjxtufqcermdywzthceowyurrlmvvbiljraidwnmznazymwcjdozfaauzcnlwsxqfzgpzbsru1234567890ukxzqsvowzhnwnzzdzokhcffkpdvwycpcmxdknjvaakqjgjkvtqctpkhvgmeytsypkrfozeljsochfjvlszrwutiq';
$local = substr($str, 0, 64);
$domain = substr($str, 0, 63);
$com = substr($str, 0, 63);
$email = $local. '@' . $domain . '.' . $com;
$is_valid = filter_var($email , FILTER_VALIDATE_EMAIL);
上面的代码返回TRUE。但是如果我尝试增加$ domain或$ com,它就会失败。根据以上评论,我当然不能增加本地费用。
所以完全只接受192个字符。
更新:
回答我自己的答案/问题上面:
看起来像254字符域规则需要进一步的解释。
看起来像PHP用来允许超过63个字符到子域,直到PHP 5.3.2。当https://bugs.php.net/bug.php?id=49576作为PHP 5.3.3发行版的一部分进入时,它改变了这种行为。
所以我们可以有最大长度为63个字符的子域。然而域部分的所有总长度可以达到254
如
地方[64]与@subdomain [63] .subdomain [63] .subdomain [63]是有效的,但不是 本地[ 64] @subdomain [65] .subdomain [63]
域部分中的每个点都是最多可以有63个字符的子域。
这里是一个示例代码,显示了上述理论(一直工作到5.3.2和5.3.3自停止工作) - http://3v4l.org/tnUR9#v5214
嗯。你的测试数据是什么。 –