多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.
我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).
验证电子邮件的最佳正则表达式是什么?
我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.
如何使用php5验证输入值是否是有效的电子邮件地址.现在我正在使用此代码
function isValidEmail($email){
$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";
if (eregi($pattern, $email)){
return true;
}
else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但它显示了已弃用的错误.我该如何解决这个问题.请帮我.
我已经阅读了有关将标题插入到php表单文件中的所有帖子,以便在提交表单后将用户重定向到另一个URL - 但我无法弄清楚如何执行此操作.以下是我的代码.你能告诉我在哪里放置标题/重定向,以便通过电子邮件发送信息然后用户转到另一个html页面?
<?php
if(isset($_POST['email'])) {
// EDIT THE 2 LINES BELOW AS REQUIRED
$email_to = "pecraig@moneymovers.com";
$email_subject = "Mailing List Form";
function died($error) {
// your error code can go here
echo "We are very sorry, but there were error(s) found with the form you
submitted. ";
echo "These errors appear below.<br /><br />";
echo $error."<br /><br />";
echo "Please go back and fix these errors.<br /><br />";
die();
}
// validation expected data exists
if(!isset($_POST['first_name']) ||
!isset($_POST['last_name']) || …Run Code Online (Sandbox Code Playgroud) 我有一个类在每次输入发送到数据库层之前验证它.请注意,我的问题不是逃避或任何事情.我的数据库层将处理SQL注入问题.我想要做的就是验证电子邮件是否有效,因为稍后该电子邮件可能被用作"发送到".例如,用户将通过发送到电子邮件的链接恢复对其帐户的访问.我读了很多filter_var,有很多人反对它,其他人也赞成.专注于'我只是想验证电子邮件而不是为数据库或html或XSS或其他任何'过滤它,是否存在使用问题filter_var?
一些HTML5输入元素接受该pattern属性,该属性是表单验证的正则表达式.其他一些HTML5输入元素(例如)input type=email会自动进行验证.
现在似乎处理验证的方式在浏览器中是不同的.给定一个特定的浏览器,比如Chrome,是否可以通过编程方式提取用于验证的正则表达式?或者也许那里有文件?
是否有任何规则允许在任何电子邮件ID中具有指定数量的@符号.如果我们要使用PHP检查电子邮件ID是否有效,请记住我的想法.
我目前正在处理的网站的一部分包含用户必须提供其电子邮件地址的注册过程.就在最近,我意识到基于非ascii的域是可能的(电子邮件也是如此).我的后端是utf-8编码的MySQL,我期待任何用户(具有不同的语言环境)应该能够输入他们的电子邮件,但不知道如何验证这种电子邮件地址.
目前我正在测试jquery工具,它正确验证了英文电子邮件地址,但未能验证非ascii电子邮件.另外我需要在服务器端用php做同样的事情.是否有正则表达式可以验证此类电子邮件地址?
我试过这个,但它在jquery工具中失败了(这只是演示的例子,我也不明白)
闪闪发光@闪闪发光.COM
当他们用他们自己的IME键入他们的英文电子邮件地址(jonesmith@somemail.com)时会发生什么.这可以通过我们用于英文邮件验证的当前正则表达式进行验证.目前我不必担心该电子邮件是否存在.
谢谢
示例有效的电子邮件地址:
"这是一个有效的地址"@ example.com
PHP代码:
<?php
header('Content-Type: text/plain');
$email = '"this is a valid address"@example.com';
$checked = filter_var($email, FILTER_VALIDATE_EMAIL);
var_dump($email, $checked);
Run Code Online (Sandbox Code Playgroud)
一台服务器上的输出:(PHP Version 5.2.6):
string(37)""这是一个有效的地址"@ example.com"
string(37)""这是一个有效的地址"@ example.com"
phpinfo():
Input Validation and Filtering enabled
Revision $Revision: 1.52.2.42 $
Directive Local Value Master Value
filter.default unsafe_raw unsafe_raw
filter.default_flags no value no value
Run Code Online (Sandbox Code Playgroud)
另一台服务器上的输出(PHP Version 5.3.3):
string(37)""这是一个有效的地址"@ example.com"
bool(false)
phpinfo():
Input Validation and Filtering enabled
Revision $Revision: 298196 $
Directive Local Value Master Value
filter.default unsafe_raw unsafe_raw
filter.default_flags no value no …Run Code Online (Sandbox Code Playgroud) 正则表达式让我大吃一惊.如何更改此选项以验证带加号的电子邮件?所以我可以用test+spam@gmail.com注册
if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/i", $_GET['em'])) {
Run Code Online (Sandbox Code Playgroud) 我想验证电子邮件域,但我不想担心可能出现的任何可能的子域。
例如:
@abc.com
@a.abc.com
@b.abc.com
...
Run Code Online (Sandbox Code Playgroud)
这些应该都是有效的。
另外,我有一个要验证的域列表,例如 abc.com、xyz.com...如何从列表中验证电子邮件域(包括子域)的最佳方法?
谢谢。
php ×8
regex ×4
email ×3
validation ×3
filtering ×1
html5 ×1
javascript ×1
preg-match ×1
redirect ×1
utf-8 ×1