Se avete fatto l’aggiornamento a PHP 5.3, ci sono alte probabilità che ci saranno alcuni avvisi o messaggi di funzioni deprecate, in alcuni casi ferma totalmente lo script.
Un esempio è la famiglia di funzioni ereg, che sono stati prese per buone per tanto tempo, anche se erano più lente e ci si sentiva meno familiare all’alternativa compatibile con famiglia preg di Perl.

Fix ereg
Con il rilascio della versione 5.3 di PHP le funzioni per le espressioni regolari POSIX sono state dichiarate deprecate. Passerà del tempo prima gli hosting utilizzeranno definitivamente tale versione, ma è bene conoscerle.
PCRE (Perl-Compatible Regular Expressions) si presenta come standard per le espressioni regolari in alternativa all’utilizzo delle storiche POSIX, utile spesso in ambito di sviluppo WEB per sostituire URL, mostrare porzioni di testo ecc.
Ecco la corrispondenza di tutte le vecchie funzioni PHP deprecate e le sostitutive:

POSIX PCRE
ereg_replace() preg_replace()
ereg() preg_match()
eregi_replace() preg_replace()
eregi() preg_match()
split() preg_split()
spliti() preg_split()
sql_regcase() nessuna corrisp.
 
Per eseguire la migrazione ereg():
#
$this->file_name = ereg('\.([^\.]*$)', $this->file_name, $extension);
#

Diventa:

#
$this->file_name = preg_match('/\.([^\.]*$)/', $this->file_name, $extension);
#
Si noti che ho avvolto il modello (\.([^\.]*$)) con l'intorno / /, che sono i delimitatori RegExp. Se nella stringa ci sono parecchie slash / (ad esempio un URL), è possibile utilizzare, come alternativa, il delimitatore #.
Per eseguire la migrazione ereg_replace()
#
$this->file_name_body = ereg_replace('[^A-Za-z0-9_]', '', $this->file_name_body);
#
Diventa:
#
$this->file_name_body = preg_replace('/[^A-Za-z0-9_]/', '', $this->file_name_body);
#
Ancora una volta, ho solo aggiunto i delimitatori al modello.
Se si utilizzano le funzioni di eregi (che sono il case-insensitive della versione di ereg), noterete che non ci sono funzioni equivalenti pregi. Questo perché questa funzionalità è gestita dai modificatori RegExp.
Fondamentalmente, per rendere ii modello di caratteri corrispondente ad un case-insensitive si dovrà aggiungere la 'i' dopo il delimitatore finale:
Per eseguire la migrazione eregi()
#
$this->file_name = eregi('\.([^\.]*$)', $this->file_name, $extension);
#
Diventa:
#
$this->file_name = preg_match('/\.([^\.]*$)/i', $this->file_name, $extension);
#
Un'altra funzione deprecata è split(). Anche in questo caso avvolgeremo il modello con dei delimitatori
Per eseguire la migrazione split()
#
list($anno, $mese, $giorno, $ora, $min, $sec) = split( '[: -]', $post_timestamp );
#
Diventa:
#
list($anno, $mese, $giorno, $ora, $min, $sec) = preg_split('/[: -]/', $post_timestamp);
#
Per concludere aggiungo tutte le corrispondenze: 

POSIX Perl ASCII Descrizione
[:alnum:] [A-Za-z0-9] caratteri alfanumerici
[:word:] \w [A-Za-z0-9_] caratteri alfanumerici incluso l’underscore “_” (=word)
\W [^\w] carattere non-word
[:alpha:] [A-Za-z] carattere alfabetico
[:blank:] [ \t] spazio e tab
[:cntrl:] [\x00-\x1F\x7F] caratteri di controllo
[:digit:] \d [0-9] cifre
\D [^\d] non-cifre
[:graph:] [\x21-\x7E] caratteri visibili
[:lower:] [a-z] caratteri minuscoli
[:print:] [\x20-\x7E] caratteri visibili e spazi
[:punct:] [-!"#$%&'()*+,./:;<=>?@[\\\]^_`{|}~] caratteri di punteggiatura
[:space:] \s [ \t\r\n\v\f] caratteri di spaziatura del testo
\S [^\s] caratteri diversi da quelli di spaziatura del testo
[:upper:] [A-Z] lettere maiuscole
[:xdigit:] [A-Fa-f0-9] cifre esadecimali
Similari
Come rimuovere i caratteri No ASCII da una stringa
16% Php
In un lavoro che sto' facendo, un cliente mi fornisce i suoi aggiornamenti attraverso un file in formato csv estratto dall'applicazione Excel della Microsoft. Ora ottenere i dati che servono da questo file prodotto da M$ n…
Estendere Google Analytics con jQuery
10% Plugins
Da un bel po' di tempo Google Analytics ha aperto la strada per la raccolta gratuita di statistiche del traffico del proprio sito web. Sono sicuro che molti di voi abbiano installato il codice di Google sui vostri siti e a…
Frammenti utili in PHP
9% Php
Se i frammenti di tipo PHP abbondano su Internet, allora perché scriverne un altro? Beh, i frammenti PHP trovati al giro sono generalmente zoppi. Frammenti che generano una stringa casuale o un ritorno di $_SERVER["REMOTE_…
Funzioni popolari per gestire le stringhe
7% Php
PHP ha una vasta scelta di funzioni integrate per la gestione delle stringhe che permettono di manipolarle facilmente in quasi ogni modo possibile. Tuttavia, imparare tutte queste funzioni, ricordando quello che fanno e qu…
Problemi con il BOM dell’UTF8
6% Php
Diventa un rompicapo, se si ha il BOM UTF8 all'inizio del file PHP, XML o javascript. Questi files devono inviare la loro intestazione prima di ogni altra cosa. A causa della posizione del BOM, che sono i primi bytes del f…