PHP è un linguaggio per lo scripting
server side che presenta numerose affinità con il Perl, uno dei linguaggi di programmazione pił
utilizzati; non stupisce quindi che le espressioni regolari in PHP possano essere utilizzate anche sfruttando una
sintassi compatibile con il Perl (sintassi PCRE: Perl
Compatible Regular Expressions).
Nello specifico presentiamo le sette funzioni di PHP
riferite a questa tipologia di sintassi:
<?il risultato del nostro piccolo script sarà:
$array = array('mino', 'lino', 'pino', 'dino');
$array_preg = preg_grep("/pino/", $array);
print_r($array_preg);
?>
Array ([2] => pino)La funzione preg_match_all() effettua una ricerca di tutte le espressioni regolari (globale) passate come parametro all'interno della stringa; gli elementi riconosciuti sono allocati all'interno di una matrice. Nell'esempio che segue abbiamo isolato tramite la funzione e le espressioni regolari tutti i valori numerici presenti un una stringa:
<?La funzione preg_match() esegue un riconoscimento nel parametro stringa utilizzando l'espressione regolare passata come criterio.
$str = "I nani sono 7 e i fantastici 4,
le possibilità di diventare ricchi 1/10";
$str .= "e quelle di diventare miliardari 0.1-0.2 su 100";
$reg_exp = "`(d+s?[./-]?)+`";
preg_match_all($reg_exp,$str,$output);
$nb = count($output[0]);
for($i=0; $i<$nb; $i++)
{
echo $output[0][$i] . "<br/>";
}
?>
<?preg_quote() svolge la funzione di inserire il carattere di escape backslash () davanti a ciascun carattere di una stringa che sia parte della sintassi di un'espressione regolare, possono così essere generate stringhe da utilizzare quali criteri di riconoscimento che contengano caratteri speciali per le espressioni regolari.
$url = "http://www.lukeonweb.net";
$reg_exp = "#^http://[a-z0-9-]+.([a-z0-9-]+.)?[a-z]+#i";
if (preg_match($reg_exp, $url))
{
echo "URL valida.";
}else{
echo "URL non valida.";
} ?>
<?l'output ottenuto sarà il seguente:
$str = "1/3 dello stipendio per l'affitto";
$str = preg_quote($str, "/");
echo $str;
?>
1/3 dello stipendio per l'affittopreg_replace() ricerca in una stringa i criteri stabiliti dall'espressione regolare, se individua una determinata sotto-stringa, la sostituisce con un sostituto.
<?l'output ("Dicembre1,2005") è dovuto all'azione su "$str" dei criteri stabiliti tramite espressione regolare.
$str = "Dicembre 25, 2005";
$exp = "/(w+) (d+), (d+)/i";
$exp2 = "${1}1,$3";
echo preg_replace($exp, $exp2, $str);
?>
<?Nelle'esempio abbiamo creato una piccola funzione in grado di rendere maiuscole le iniziali minuscole di sotto stringhe separate da un trattino; l'output sarà:
$str = "lancia-fiamme";
function maiusc($array)
{
return ucfirst($array[1]) . '-' . ucfirst($array[2]);
}
echo preg_replace_callback("`([a-z]+)-([a-z]+)`", "maiusc", $str);
?>
Lancia-Fiammepreg_split() restituisce una matrice di parti di una stringa suddivise con criteri stabiliti nell'espressione regolare. Nel caso in cui venga specificato un limite, vengono restituite tante parti della stringa iniziale quante quelle indicate nel limite, -1 indica"nessun limite":
<?L'output del nostro script sarà:
$str = "Salmone";
$str_split = preg_split("//", $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($str_split);
echo "<br/>" . $str_split[0];
?>
Array ([0]=> S[1]=> a[2]=> l[3]=> m[4]=> o[5]=> n[6]=> e)PREG_SPLIT_NO_EMPTY è un flag cioè un ulteriore parametro che può essere passato alla funzione, se viene specificato la funzione preg_split() restituisce parti di stringa non vuoti.
S