今天翻阅Laravel的验证的时候,发现一个比较有用的函数,而且以前都没接触过,其实关于字符串验证的规则,php底层都已经实现了。
函数:

filter_var 

(PHP 5 >= 5.2.0, PHP 7)

filter_var — 使用特定的过滤器过滤一个变量
mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] )

具体规则还有很多,具体的可以看看php手册里面的内容,讲的很详细。没事儿的时候多翻翻手册,看看优秀的源码,好处多多。

经测试:
验证email的时候,@前面最多可以有64个字符,@后面最多80个字符。
函数:

function checkEmailAndDomain($email)
{
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
return false;
}
$str = explode('@', $email);
return (checkdnsrr(idn_to_ascii($str[1]), 'MX'));
}
$email = '19121231231243124124assa3@qq.com';
echo "<pre>";
var_dump(checkEmailAndDomain($email));
echo "</pre>";
exit;

​https://tiicle.com/items/228/laravel-validation-rules-alpha-alpha-dash-alpha-num-invalid-verification-letters-chinese-will-be-through-problem-solving​