Устарела: Функция 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;
}

Поиск решения был бы весьма признателен

Author: Community, 2012-11-27

3 answers

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

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

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

Станет:

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

P.s. Мне пришлось изменить более ста файлов, когда я переносил свой старый проект на PHP 5.3, чтобы избежать изменения вручную, я использовал следующий скрипт, чтобы сделать это за меня:

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

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

 28
Author: Leri, 2014-03-14 08:03:50

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

 1
Author: Kai, 2012-11-27 09:17:02

Как ты и сказал - не важно, это работает как заклинание:

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

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

 0
Author: no0ne, 2012-11-27 09:46:07