Come ti risolvo “Function ereg is deprecated” su php 5.3


Nel mio plugin hiddy ho utilizzato la funzione ereg e la funzione eregi per fare dei controlli con un pattern, purtroppo  nel 2010 le funzioni di ricerca (“ereg()” o “eregi()“, sostituzione (“ereg_replace()” o “eregi_replace()“) e suddivisione (“split()“)  sono state abbandonate da PHP, marcate come Deprecated.

Nell’ error_log file troverete un messaggio come questo:

Deprecated: Function ereg() is deprecated in /home/www/sito/nome_file.php on line 40

Per ovviare a questo messaggio ereg deve essere sostituito con preg_match, solitamente è più veloce e basata su pearl non ha quindi bisogno di librerie aggiuntive ed utilizza le funzioni standard del sistema operativo.

Ecco un esempio semplice semplice di come modificare un controllo della validità di un indirizzo mail, qqui il codice con ereg:

if(!eregi("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$", $str)) {
    $msg = 'indirizzo specificato non è formalmente corretto';
}
else {
$valid = true;

a questo punto con un paio di piccole modifiche si sostiruisce ereg con preg_match:

if(!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $str)) {
    $msg = 'indirizzo specificato non è formalmente corretto';
}
else {
$valid = true;
}

Sono state contrassegante come deprecated altre funzioni più o meno utilizzate dagli sviluppatori php, eccone una lista:

  • call_user_method() (use call_user_func() instead)
  • call_user_method_array() (use call_user_func_array() instead)
  • define_syslog_variables()
  • dl()
  • ereg() (use preg_match() instead)
  • ereg_replace() (use preg_replace() instead)
  • eregi() (use preg_match() with the ‘i’ modifier instead)
  • eregi_replace() (use preg_replace() with the ‘i’ modifier instead)
  • set_magic_quotes_runtime() and its alias, magic_quotes_runtime()
  • session_register() (use the $_SESSION superglobal instead)
  • session_unregister() (use the $_SESSION superglobal instead)
  • session_is_registered() (use the $_SESSION superglobal instead)
  • set_socket_blocking() (use stream_set_blocking() instead)
  • split() (use preg_split() instead)
  • spliti() (use preg_split() with the ‘i’ modifier instead)
  • sql_regcase()
  • mysql_db_query() (use mysql_select_db() and mysql_query() instead)
  • mysql_escape_string() (use mysql_real_escape_string() instead)

Link alla pagina ufficiale:
http://php.net/manual/en/migration53.deprecated.php

Come ti risolvo “Function ereg is deprecated” su php 5.3 ultima modifica: 2011-10-24T13:15:43+00:00 da Enrico

1 Comments.

  1. Hiddy 1.5 che c’è di nuovo - pingback on 25/10/2011 at 3:08 pm

Trackbacks and Pingbacks: