Corsi on-line

PHP abbandona le funzioni POSIX, per sempre

Capita ancora di aprire il codice di un’applicazione PHP e di vedere al suo interno controlli basati su espressioni regolari dotati di una sintassi simile alla seguente:

$mail = "mia@mail.it";
if (eregi("^[a-z0-9][_\\.a-z0-9-]+@([a-z0-9][0-9a-z-]+\\.)+([a-z]{2,4})", $mail)) {
echo "Email valida.";
} else {
echo "Email non valida.";
}

Il frammento di listato proposto è sintatticamente corretto, ma non può più essere utilizzato perché, a partire dalla versione 5.3 di PHP, le funzioni basate sullo standard POSIX sono state considerate deprecate, per intenderci parliamo delle cosiddette funzioni “ereg”.

Al loro posto è necessario utilizzare le funzioni basate su PCRE (Perl Compatible Regular Expressions, note anche come funzioni “preg”) per tutte le operazioni di Pattern Matching; in una ambiente PHP aggiornato e configurato correttamente, l’utilizzo delle funzioni POSIX darà infatti origine ad una notifica di errore.

Per cui, utilizzando PCRE, il codice proposto all’inizio di questo post potrà essere riformulato nel modo seguente:

$mail = "mia@mail.it";
$valid = preg_match(
'/^[A-z0-9_\-]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{2,4}$/',
$mail);
if ($valid) {
echo "Email valida.";
} else {
echo "Email non valida.";
}
Post correlati
I più letti del mese
Tematiche