Prima di scrivere una regexp è sempre bene:
1. conoscerne la sintassi;
2. prevedere ogni situazione anomala che può generare falsi positivi.
Per il punto 1, dico che è inutile scrivere un post con una risposta che è sintatticamente e concettualmente sbagliata.
Per il punto 2, invece, devi valutare di diverse possibilità.... e sin da subito ti dico: fatta la regexp, trovato l'inganno.
Poi ti spiego perché.
Il numero di telefono può essere innanzi tutto fisso o mobile.
Il fisso ha sicuramente un prefisso di 2, 3 o 4 cifre ed inizia per 0 (zero), ed il numero potrebbe essere composto dai 5 ai 9 numeri.
Quindi (in soldoni) dovresti prevedere il matching di un numero, in un testo, composto di 13 numeri consecutivi.
Discorso simile per i cellulari, dove però sai che il numero sarà composto sempre di 10 cifre che iniziano con il 3.
Potresti iniziare quindi a comporre la tua regexp, pensando proprio al minimo delle possibilità come segue:
Codice PHP:
$regexp = "#[0-9]{7, 14}#";
if (preg_match_all($regexp, $textarea)) {
echo "Non è possibile inserire numeri telefonici";
} else {
echo "Non hai inserito numeri telefonici";
}
Con questo semplice pattern vai a controllare se nella stringa passata ci sono sequenza numeriche con un numero di cifre compreso tra 7 e 14.
Il pattern lo puoi complicare con varie possibilità, che vanno tutte a rispondere alle valutazioni di cui ho scritto all'inizio del post.
Quale è l'inganno di cui ti parlavo, però: se l'utente vuole inserire davvero il proprio numero, nell'annuncio, potrebbe trovare un escamotage che fa saltare il preg_match.
In questo caso, per esempio, gli basterebbe inserire degli spazi nelle sequenze numeriche, oppure dei punti.
Prevedere tutte le varie possibilità di combinazione, con una sola espressione regolare, sarà quasi impossibile.
Con una di questo genere, riuscirai a fare pulizia comunque dei comportamenti errati degli utenti meno smaliziati.... quindi penso di un buon 90% degli utenti di qualsiasi sito!
Segnalo ad entrambi, infine, un ottimo tutorial su come si compone una Espressione Regolare, presente nel sito PHPro.org. ----> LINK