PHP  »  Articoli  »  Programmazione Php 

PHP abbandona le funzioni ereg: le alternative

di: Claudio Garau     12 Marzo 2010

Le funzioni ereg sono state utilizzate per lungo tempo in applicazioni PHP per procedure di riconoscimento di espressioni regolari, esse infatti potevano risultare particolarmente utili per operazioni di ricerca ("ereg()" o "eregi()", sostituzione ("ereg_replace()" o "eregi_replace()") e suddivisione ("split()") in variabili stringa o semplici testi, aventi caratteristiche corrispondenti con quelle indicate da un'espressione regolare passata come argomento.

Non semplicissime da utilizzare, come tutte le funzioni basate sulle espressioni regolari, si erano comunque diffuse presso gli sviluppatori grazie alla vasta documentazione presente in Rete; ora però, come conferma lo stesso manuale ufficiale di PHP, a partire dalla versione 5.3 di questo linguaggio, esse sono considerate deprecate e naturalmente non potranno essere utilizzate nemmeno per la release 6 di PHP.

Così, ora accade che coloro che provano ad utilizzare una funzione ereg sulle versioni più recenti di questo linguaggio visualizzino errori simili al seguente:

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

Questa breve trattazione è dedicata agli sviluppatori "orfani" delle funzioni ereg e proporrà alcune alternative per rimediare alla loro assenza.

Perché non utilizzare più le funzioni ereg?

L'abbandonato supporto per le funzioni ereg in PHP, spiana la strada all'utilizzo di un'alternativa già contenuta nel linguaggio da lungo tempo, le funzioni preg (o PCRE functions); anch'esse accettano come argomenti delle espressioni regolari e possono essere utilizzate per scopi analoghi a quelli per cui erano destinate le ereg. Ma cosa differenzia le due tipologie di funzioni? E perché alle ereg sono state preferite le PCRE?

Le ereg sono dette anche POSIX Regex Functions, dove POSIX (Portable Operating System Interface UNIX) è il nome di uno standard definito per le applicazioni sviluppate avendo come ambienti di riferimento le varianti dei sistemi operativi UNIX. Esse non richiedono librerie esterne per il loro utilizzo. Le funzioni PCRE (Perl Compatible Regular Expressions) sono invece basate sulle librerie omonime, queste ultime mettono a disposizione un vasta raccolta di funzionalità che permettono di implementare le operazioni di pattern matching (corrispondenza tra stringhe) tramite espressioni regolari, impiegando la stessa sintassi e gli stessi costrutti semantici previsti per il linguaggio di programmazione Perl; libere e gratuite, le librerie PCRE consentono di utilizzare funzioni alternative a quelle basate sullo standard POSIX e inoltre introducono funzionalità aggiuntive.

Compatibilità con Perl a parte, che facilità notevolmente il lavoro per coloro che hanno già familiarità con questo linguaggio, un altro motivo legato al preferito utilizzo delle funzioni basate su PCRE è da ricercarsi nel miglior livello di prestazioni, queste infatti garantiscono una velocità di esecuzione maggiore rispetto alle POSIX; per questo motivo, nonostante la loro permanenza in PHP per lungo tempo, l'utilizzo delle POSIX è sempre stato scoraggiato in favore delle PCRE.

Le funzioni PCRE sono inoltre binary-safe, questo significa che sono in grado di gestire il modo corretto i file binari, possono essere quindi molto utili nel caso in cui ci si trovi a gestire dati dal formato sconosciuto.

Guide PHP

Guida Zend Framework

Diventate professionisti dello sviluppo Web. Zend Framework è lo...

Guida Applicazioni Facebook con PHP

Come realizzare un'applicazione per Facebook. Dalle basi della...

Guida PHP con Windows e IIS

Installare ambienti per lo sviluppo e la produzione di applicazioni...

Altre guide

Newsletter @PHP

Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Google AdWords Base

27 Febbraio 2012 a Milano
Disponibilità: 7 Posti

Corso Google AdWords Base

28 Marzo 2012 a Roma
Disponibilità: 7 Posti