Buongiorno a tutti gli utenti.
Premesso che sto cimentandomi nello studio del PHP e che credo di aver compreso molto bene l'uso delle regex, mi trovo con un semplicissimo script che non funziona come ci si aspetterebbe.
Il frammento di codice è la parte clou, quindi Vi risparmio l'intera stesura.
Il mio programmino, dato un testo che contiene molte frasi scritte un po a caso, deve permettere l'estrapolazione di tutti i numeri telefonici (fissi e cellulari) dall'intera stringa di testo. Attraverso un primo controllo della stringa, usando "preg_match_all", vado a scremare tutti i numeri telefonici e memorizzarne ogniuno, all'interno di un ulteriore array.
L'array in questione viene riempito correttamente dai valori trovati. Essendo esso, contenitore di numeri fissi e cellulari (in pratica, numeri che cominciano per zero e numeri che cominciano per tre).
In seconda istanza, usando un semplice ciclo "foreach", controllo ogni singolo elemento dell'array appena creato e, con l'aiuto di "preg_match", scremare ulteriormente ogni singolo numero fisso (che comincia per zero) e andarlo a memorizzare in un altro array.
La funzione "print_r", mostra semplicemente un array completamente vuoto.
Sinceramente non capisco dove stia il problema, dato che ho fatto e rifatto mille prove inutili in 2 ore.
Riuscite ad aiutarmi a risolvere l'enigma?
In allegato lo screenshot di ciò che viene stamapto a video.
Grazie anticipate.
Premesso che sto cimentandomi nello studio del PHP e che credo di aver compreso molto bene l'uso delle regex, mi trovo con un semplicissimo script che non funziona come ci si aspetterebbe.
Il frammento di codice è la parte clou, quindi Vi risparmio l'intera stesura.
PHP:
public function trova ()
{
$rice = "/[0-9]{2,4}\s?[\-\.\/]?\s?[0-9]{5,8}/";
preg_match_all ($rice, $this->frase, $trovato);
print_r ($trovato);
echo "<br/><br/>";
echo "Sono stati trovati " . count($trovato[0]) . " numeri telefonici!<br/><br/>";
$screma = "/^0w{,15}/";
//$screma2 = "/^3w{,15}/";
foreach ($trovato[0] as $elemento)
{
//echo $elemento . "<br/>";
if (!preg_match ($screma, $elemento, $fisso))
{
echo "Non ho trovato nulla!<br/>";
}else{
echo $elemento;
}
}
echo "<br/><br/>";
print_r ($fisso);
echo "<br/><br/>";
//print_r ($cellulare);
echo "<br/><br/>";
}
L'array in questione viene riempito correttamente dai valori trovati. Essendo esso, contenitore di numeri fissi e cellulari (in pratica, numeri che cominciano per zero e numeri che cominciano per tre).
In seconda istanza, usando un semplice ciclo "foreach", controllo ogni singolo elemento dell'array appena creato e, con l'aiuto di "preg_match", scremare ulteriormente ogni singolo numero fisso (che comincia per zero) e andarlo a memorizzare in un altro array.
La funzione "print_r", mostra semplicemente un array completamente vuoto.
Sinceramente non capisco dove stia il problema, dato che ho fatto e rifatto mille prove inutili in 2 ore.
Riuscite ad aiutarmi a risolvere l'enigma?
In allegato lo screenshot di ciò che viene stamapto a video.
Grazie anticipate.