不推荐使用:不推荐使用函数ereg()

no0*_*0ne 4 php forms deprecated eregi ereg

可能重复:
如何在PHP中将ereg表达式转换为preg?

我的联系表格是其他工作,但我一直收到以下错误:

不推荐使用:函数ereg()在/ home/.....中已弃用

我真的迷失了,但我认为这是需要调整的部分.

    if ( empty($_REQUEST['name']) ) {
    $pass = 1;
    $alert .= $emptyname;
} elseif ( ereg( "[][{}()*+?.\\^$|]", $_REQUEST['name'] ) ) {    
    $pass = 1;
    $alert .= $alertname;
}
if ( empty($_REQUEST['email']) ) {
    $pass = 1;
    $alert .= $emptyemail;
} elseif ( !eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]   {2,3})$", $_REQUEST['email']) ) {
    $pass = 1;
    $alert .= $alertemail;
}
if ( empty($_REQUEST['message']) ) {
    $pass = 1;
    $alert .= $emptymessage;
} elseif ( preg_match( "[][{}()*+?\\^$|]", $_REQUEST['message'] ) ) {
    $pass = 1;
    $alert .= $alertmessage;
}
Run Code Online (Sandbox Code Playgroud)

寻找解决方案将受到高度赞赏

Ler*_*eri 36

您必须使用preg_match而不是ereg因为最后一个被弃用.

更换它并不是什么大问题:

ereg( "[][{}()*+?.\\^$|]", $_REQUEST['name'] )
Run Code Online (Sandbox Code Playgroud)

会变成:

preg_match( "/[][{}()*+?.\\^$|]/", $_REQUEST['name'] )
Run Code Online (Sandbox Code Playgroud)

ps当我将旧项目移植到PHP 5.3时,我不得不修改超过一百个文件,以避免手动修改我使用以下脚本为我做的:

function replaceEregWithPregMatch($path) {
    $content = file_get_contents($path);
    $content = preg_replace('/ereg\(("|\')(.+)(\"|\'),/',
                            "preg_match('/$2/',",
                            $content);
    file_put_contents($path, $content);
}
Run Code Online (Sandbox Code Playgroud)

我希望它有所帮助.

  • 请注意,`preg_match` 中有 [delimeters](http://php.net/manual/en/regexp.reference.delimiters.php)。 (2认同)