Introduzione alle espressioni regolari in PHP
Le espressioni regolari sono comandi per ricerche e sostituzioni complesse. Permettono di fare cose molto interessanti, ma, sfortunatamente, sono piuttosto difficili da apprendere.
Esistono diverse funzioni PHP per lavorare
con le espressioni regolari. Inizieremo a familiarizzare
con esse usando l'esempio di preg_replace. Questa
funzione accetta come primo parametro cosa sostituire,
come secondo - con cosa sostituire, e come terzo parametro
- la stringa in cui effettuare la sostituzione:
<?php
preg_replace(cosa sostituire, con cosa, stringa);
?>
Inoltre, il primo parametro della nostra funzione accetta
non semplicemente una stringa, ma un'espressione regolare,
che rappresenta una stringa con una serie di comandi,
posti all'interno dei caratteri cancelletto #.
Questi cancelletti sono chiamati delimitatori
delle espressioni regolari.
Dopo i delimitatori si possono scrivere modificatori - comandi che cambiano le proprietà generali dell'espressione regolare.
Le espressioni regolari stesse sono composte da due tipi di caratteri: quelli che rappresentano se stessi e i caratteri-comando, che sono chiamati caratteri speciali.
Le lettere e i numeri rappresentano se stessi. Nel prossimo
esempio sostituiremo la lettera 'a' con '!'
tramite un'espressione regolare:
<?php
preg_replace('#a#', '!', 'bab'); // restituirà 'b!b'
?>
Invece, il punto è un carattere speciale
e rappresenta qualsiasi carattere. Nel prossimo
esempio troveremo una stringa secondo questo schema:
lettera 'x', poi qualsiasi carattere, poi
di nuovo lettera 'x':
<?php
preg_replace('#x.x#', '!', 'xax eee'); // restituirà '! eee'
?>
Data la stringa:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Scrivi un'espressione regolare che trovi le stringhe
'ahb', 'acb', 'aeb'
secondo lo schema: lettera 'a', qualsiasi carattere,
lettera 'b'.
Data la stringa:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Scrivi un'espressione regolare che trovi le stringhe
'aeeb', 'adcb', 'axeb'
secondo lo schema: lettera 'a', due qualsiasi
caratteri, lettera 'b'.