Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Home ~ Php :: I metacaratteri :: Indice Php

I metacaratteri

Categoria: Php Inserito il: 13-12-2005 Stampa (8111 click)

I metacaratteri sono dei tipi particolari di caratteri utilizzati nelle espressioni regolari. Li introdurremo di seguito specificandone in breve il significato:


()le parentesi tonde delimitano una sotto-stringa
[]le parentesi quadre delimitano la classe di appartenenza dei caratteri che racchiudono
{}data una stringa o un singolo carattere, le parentesi graffe ne possono stabilire il numero, un minimo, un massimo, o un intervallo in cui un carattere o una stringa devono presentarsi
^l'accento circonflesso indica il punto d'inizio di una stringa, se si trova all'interno di una classe la nega
$il dollaro in questo caso non indica una variabile ma il punto finale di una stringa
il backslash determina l'escape dei caratteri speciali (come ad esempio gli apici)
?il punto di domanda stabilisce l'assenza di occorrenze o una singola occorrenza di un carattere o di una stringa
+il segno pił stabilisce una singola occorrenza o pił occorrenze di un carattere o di una stringa
.il punto fermo rappresenta un carattere qualsiasi tranne l'acapo
|la barra (pipe), sostitutiva dell'operatore OR, restituisce TRUE quando almeno uno degli argomenti è TRUE
*l'asterisco stabilisce nessuna o pił occorrenze di un carattere o di una stringa

Come anticipato, le parentesi tonde delimitano una sotto-stringa, quest'ultima viene interpretata letteralmente, cioè "(albero)" è realmente vista come insieme di caratteri "albero".
Le parentesi tonde, vengono utilizzate con i metacaratteri che indicano le ripetizioni di una sotto-stringa, ad esempio "(albero)?" indica la presenza o meno della stringa delimitata, oppure, individuano caratteri che possono essere utilizzati per operazioni da compiere su altre stringhe, come per esempio sostituzioni.

Le parentesi quadre, delimitano invece una classe di caratteri, quindi "[albero]" non viene visto come sotto-stringa, ma come classe composta dai caratteri "a,l,b..etc".

Nel caso appena esposto abbiamo indicato tutti i caratteri compresi nella classe, ma potremmo anche stabilire un determinato intervallo, come ad esempio "[b-m]", quindi la nostra classe comprenderà tutti i caratteri compresi nell'intervallo stabilito.

L'intervallo può anche essere di tipo numerico "[0-7]", oppure potremmo raffinare la nostra classe con l'ausilio di altri metacaratteri, ad esempio l'espressione
[b-m0-7?]{1,2}
indica che i caratteri dell classe delimitata devono presentarsi da un minimo di una volta ad un massimo di due.

Come si evince dall'ultimo esempio proposto e come già anticipato, le parentesi graffe indicano un numero preciso, un minimo, un massimo o un intervallo in cui un insieme di caratteri deve presentarsi in una stringa.
Quindi "{2}" indica un numero esatto (impone due presenze); "{2,}" indica un minimo (impone almeno due presenze); "{,2}" indica un massimo (impone al massimo due presenze); "{1,2}" stabilisce un intervallo (almeno una presenza ma non pił di due).

Un'esempio abbastanza noto in cui possiamo trovare un impiego massiccio di metacaratteri e quello relativo alla validazione di un indirizzo di posta elettronica:
<?
$email = "mail@mail.info";
if(
ereg("^[a-z0-9][_.a-z0-9-]+@([a-z0-9][0-9a-z-]+.)+([a-z]{2,4})",$email)
)
{
echo "Indirizzo valido";
}else{
echo "Indirizzo non valido";
}
?>
Nello specifico abbiamo:
  • ^[a-z0-9] con il compito di controllare che nell'indirizzo si trovi del testo composto da caratteri compresi negli intervalli "a-z" o "0- 9" (nel nostro caso, la sotto-stringa "mail" soddisfa i controlli e dà esito positivo);
  • [_.a-z0-9-] genera un controllo sulla presenza di caratteri come l'underscore (ma_il) o il punto (ma.il);
  • +@( controlla che nell'indirizzo sia presente il simbolo della chiocciola (mail@);
  • [a-z0-9][0-9a-z-] controlla la presenza di una sotto-stringa dopo la chiocciola (@mail) le cui caratteristiche soddisfino gli intervalli di classe indicati tra parentesi quadre;
  • +.)+ contolla che il punto fermo sia il quarto elemento presente (mail@mail.);
  • ([a-z]{2,4}) ricerca la presenza dell'estensione finale per una lunghezza non inferiore ai 2 caratteri e non superiore ai 4 (mail@mail.info).
Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione, anche parziale, senza l'esplicito consenso dell'autore e della redazione di Mrwebmaster.it.

Cerca nel sito
Per sito
Sviluppatore di applicazioni Web con competenze evolute nella progettazione delle basi di dati, autore per alcune delle pił importanti testate on line dedicate alla manualistica tecnica (HTML.it, MrWebmaster.it, Edit) e consulente per l'e-learning.
Tutte le categorie
Tutorial Random
Un primo script per le JSP
Dopo alcune pagine dedicate interamente alla teoria, in questo capitolo passeremo ad un approccio pił pratico cominciando ad introdurre qualche... Leggi l'articolo
Corsi online per sviluppatori
Corsi per Webmaster, Web Designer, Programmatori, Grafici e Sistemisti