Spesso la stesura di espressioni regolari apparentemente semplici si trasforma in un lavoro molto laborioso e anche se si opera con il massimo dell’attenzione l’errore è sempre dietro l’angolo. Per questo motivo ho cercato qualcosa che potesse dare un valido aiuto e RegexBuddy è proprio il programma giusto, utilizza un’interfaccia semplice e da la possibilità di scrivere espressioni regolari per più linguaggi. Ho avuto modo di provare una versione di qualche tempo fa e mi ha sorpreso, non è gratuito, ma il costo non è eccessivo.

Visita il sito ufficiale di RegexBuddy

Ho approfondito lo studio dell’espressione regolare di ieri e ne ho scritta una decisamente migliore utilizzando la funzione preg_match_all() derivata dal Perl. Questa, a differenza della regex scritta nel precedente articolo, estrae tutti gli indirizzi email che si trovano all’interno di un testo.

1
2
3
4
5
6
<?php
preg_match_all("/\\b[A-Z0-9._-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b/i",$testo,$array);
foreach($array[0] as $v){
    echo $v."<br>\n"; /* Elenco degli indirizzi trovati */
}
?>

Oggi mi sono cimentato nella stesura di un’espressione regolare per cercare un indirizzo email all’interno di un testo. Per fare ciò ho utilizzato la funzione eregi() che corrisponde a ereg() in versione “case insensitive”. Lo script che ho elaborato è molto semplice ed è il seguente:

1
2
3
4
5
<?php
if (eregi("[a-z\._-]+@[a-z\._-]+\.[a-z]{2,3}",$testo,$array)){
    echo $array[0];  /* Indirizzo email trovato */
}
?>

Per l’utilizzo che ne ho fatto funziona perfettamente ma sono sicuro che si può migliorare… datemi un pò di tempo! :-)