Устаревший: функция ereg() устарела

Возможный дубликат:
Как я могу преобразовать выражения ereg в preg в PHP?

Моя контактная форма также работает, но я получаю следующую ошибку:

Устаревший: функция 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;
}

Поиск решения будет высоко ценится

3 ответа

Решение

Вы должны использовать preg_match вместо ereg потому что последний устарел.

Замена это не имеет большого значения:

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

станет:

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

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);
}

Я надеюсь, что это помогает.

Функция ereg() устарела и больше не должна использоваться. Документация говорит вам, что делать (использовать preg_match вместо).

Как вы сказали - не важная персона, она работает как шарм:

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

Спасибо вам, ребята

Другие вопросы по тегам