Corsi on-line
Chiudi
Newsletter:
  • Seguici su Facebook
  • Seguici su Twitter
  • Seguici su Google+
  • Seguici via RSS
  • Seguici col tuo Smartphone

Espressioni regolari con le funzioni PCRE (e differenze con le funzioni POSIX)

Articolo scritto da Max Bossi
Pagina 1 di 4

Ne avevamo già accennato nei giorni scorsi attraverso le pagine del nostro blog, ma oggi desidero approfondire un argomento che, credo, sia di interesse per migliaia di sviluppatori che - come me - utilizzano quotidianamente il PHP per sviluppare le proprie web applications.

A partire dalla versione 5.3 di PHP, infatti, gli sviluppatori che desiderano avvalersi delle potenzialità delle espressioni regolari non potranno più fare ricorso alle funzioni POSIX (per intenderci ereg() e famiglia) ma dovranno, necessariamente, utilizzare le funzioni PCRE (Perl Compatible Regular Expressions) come, ad esempio, preg_match().

(L'articolo continua più sotto...)

Le funzioni PCRE integrate in PHP consentono di utilizzare la sintassi delle espressioni regolari tipica del Perl (più precisamente l'implementazione attuale offre supporto alla sintassi di Perl 5.005) che si presenta leggermente diversa rispetto a quella delle funzioni POSIX. Per maggiori informazioni sulla sintassi delle PCRE è possibile consultare il manuale disponibile sul sito ufficiale PCRE.org.

Effettuare confronti: la funzione preg_match()

Qualora si desideri effettuare un confronto tra una stringa ed un pattern (un modello scritto sotto forma di regular expression) sarà necessario ricorrere alla funzione preg_match() che, di fatto, sostituisce ereg() ed eregi().

L'utilizzo di preg_match() è, nell'uso comune, piuttosto semplice: si passa alla funzione il pattern e la stringa di verificare. Se il pattern è soddisfatto la funzione restituisce 1 in caso contrario 0 (oppure FALSE se c'è un errore).

In realtà migrare da ereg() non è cosa complicata. Sarà sufficiente qualche piccolo accorgimento nella formulazione del pattern.

Vediamo un esempio:

<?php
if (preg_match('/mrwebmaster/i','Evviva MrWebmaster!')) {
  echo "Trovato";
}else{
  echo "NON trovato";
}
?>
Il che è identico a:
<?php
if (eregi('mrwebmaster','Evviva MrWebmaster!')) {
  echo "Trovato";
}else{
  echo "NON trovato";
}
?>

Nel nostro semplice esempio di utilizzo di preg_match() abbiamo usato come pattern la stringa

/mrwebmaster/i
Vediamo la sintassi:

Le differenze con ereg()

Come potete vedere le differenze con ereg() non sono moltissime; vediamo di riassumerle brevemente:

Sulla base di quanto detto (e delle differenze di cui si è accennato) possiamo considerare ancora (parzialmente) valide le spiegazioni teoriche riguardanti la sintassi delle espressioni regolari reperibili a questa pagina dell'articolo "Le espressioni regolari in PHP" dedicato alle vecchie funzioni POSIX.

Corsi
Corso LinuxCorso Linux
Guida completa al sistema open-source. A partire da 39 €.
Corso MySQLCorso MySQL
Gestione del database open-source. A partire da 49 €.
Corso PHPCorso PHP
Corso completo per la creazione di siti Web dinamici. A partire da 49 €.
Vedi anche...
Annunci

Mr.Webmaster

Pubblicità
Chi Siamo
Contattaci
Collabora
Note Legali
© 2003 - 2012 Mr.Webmaster - Il portale dei Webmaster Italiani - Tutti i diritti riservati | Powered by IKIweb Internet Media S.r.l. - PIVA 02848390122