PHP,使用PHP 5.3兼容的代码

问题描述:

我需要重写此功能与PHP 5.3PHP,使用PHP 5.3兼容的代码

function fns_data($address) 
{ 
if (ereg("^[a-zA-Z0-9_\.\-][email protected][a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$", $address)) 
{return true;} 
return false; 
} 

任何人都可以帮助兼容替代代码?

感谢

+0

http://devthought.com/2009/06/09/fix-ereg-is-deprecated-errors-in-php-53/ – Brad 2011-05-19 16:32:07

+2

虽然你在这,你可以换出整个正则表达式更有效的一个。 http://www.regular-expressions.info/email.html – mario 2011-05-19 16:32:15

+1

只是一个通用的编码提示:您可以从该返回语句中删除括号{}。如果在if/for/while之后没有这样的括号,则第一个语句/行(以“;”结尾)被调用。 :) – LouwHopley 2011-05-19 16:35:09

一般而言,改变EREG到预浸(通常)那样简单重命名为“的preg_match”并添加一个/到图案的开始和结束。因为你的模式是(相对)简单:

function fns_data($address) { 
    if (preg_match('/^[a-zA-Z0-9_\.\-][email protected][a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/', $address)) { 
     return true; 
    } 
    return false; 
} 

退房filter_var(),在新版本5.2.0到PHP:

function fns_data($address) { 
    return filter_var($address, FILTER_VALIDATE_EMAIL); 
} 

首先,不使用额日格,但的preg_replace ,并使用正确的电子邮件正则表达式,像这样的:

function fns_data($address) { 
    if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $address)) 
     return true; 

    return false; 
} 

甚至更​​好,你现在可以使用filters

function fns_data($address) { 
    return filter_var($address, FILTER_VALIDATE_EMAIL); 
}