:master:
Io prenderei il testo, e poi farei un explode per ogni spazio che vi è contentuo.
L'explode genera in questo modo un array per ogni parola che ha trovato.
Ciclando poi il tutto e andando a passare ogni parola con una regexp andrei a scoprire se e semmai quanti indirizzi email sono stati trovati.
Butto giu un po' di codice al volo, ma testalo perché non ne ho tempo.
Codice PHP:
$testo = "questo cucciolo è stato trovato x strada nei pressi di roma. le persone che lo ospitano nn possono tenerlo oltre questo week end, dopodichè nn rimane che il canile.
lui è un maschietto, presumiamo abbia 2 mesi circa, bellissimo, in canile con questo freddo e così piccolo di età difficilmente sopravviverebbe! cerchiamo adozione urgentissima o appoggio temporaneo in attesa di adozione.
lo portiamo anche la nord!
x info adozioni
339/4981956 carmine
3317310768 chiara
x possibili stalli:
[email]prova1@gmail.com[/email]
non per altro, ma non mi sta bene
[email]prova2@gmail.com[/email]";
// creo un array di ogni singola parola
$array_parole = explode(" ", $testo);
// conto di quante righe è composto l'array,
// per cui di quante parole è il testo
$numero_parole = count($array_parole);
// ciclo l'array andando a controllare ogni singola parola
for ($i = 0; $i <= $numero_parole; $i++) {
// se in una parola, trovo
if(preg_match("/^[a-zA-Z][a-zA-Z0-9_\.]*@[a-zA-Z][a-zA-Z0-9_]*(\.[a-zA-Z][a-zA-Z0-9_]*)+$/",$array_parole[$i])) {
$array_email[] = $array_parole[$i];
}
}
Credo sia chiaro come lo script mi ritorni un array contenente tutte le email che trova nel testo.
Lo script potrebbe essere migliorato grazie (ad esempio) ad un semplice controllo sulla variabile $numero_parole: se è uguale a 0, allora non ha senso andare a fare il ciclo successivo.
Chiama per qualsiasi errore.