Innanzittutto un saluto a tutti da un nuovo arrivato. :P
Mi sono da poco affacciato al mondo del php e mi sto invero appassionando. Sto studiando da un testo di Kevin Yank e dopo aver visto qualcosina riguardo le funzioni di query su SQL mi sono imbattutto nelle "Espressioni Regolari". Il mio problema sta nel fatto che ho provato a costruire un semplice script php che effettuasse un controllo di validità "grammaticale" di un ipotetico indirizzo email sfruttando per l'appunto la funzione ereg e un'espressione regolare. Fatto sta che dopo innumerevoli test il " - " (tek) sebbene sia presente nell'espressione non viene riconosciuto come valido all'interno della funzione e non capisco il perché... So che quel segno ha un valore speciale all'interno delle espressioni e so anche che bisogna utilizzare un backslash per portarlo al significato "letterale", e così ho fatto ma non funziona lo stesso... 
In tutti gli altri casi (es xxx_yy.y[AT]server.it oppure xxx.y_y_y[AT]server.it) sembra funzionare.
Posto di seguito il codice: sia chiaro che è un qualcosa che ho scritto per puro spirito auto-didattico (quindi sorvolate sull'effettiva utilità o funzionalità del codice :P).
codice:
<?php /** * @author ggxphp * @copyright 2009 */
if (!isset($_POST['c'])): ?>
Questo script php serve per verificare la
validità di un indirizzo email tramite l'uso
delle Espressioni Regolari</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
Inserisci l'indirizzo email da verificare:
<input type="text" name="c" size="30"><input type="submit" value="Verifica"></form></p>
<?php else:
$email=$_POST['c'];
$selfpage=$_SERVER['PHP_SELF'];
if (ereg('^([a-zA-Z0-9]+[a-zA-Z0-9\-_\.]*)[@]{1}([a-zA-Z0-9\-_]+)[\.]{1}([a-zA-Z]{2,4})$', $email, $req))
{
echo "
L'indirizzo email $email inserito E' VALIDO ed è così composto:</p>".
"
<ul>[*]Nome utente: $req[1]".
"[*]Server: $req[2]".
"[*]Dominio: $req[3][/list]</p>".
"Invia email
".
"Torna alla pagina di controllo";
} else {
echo "
L'indirizzo email $email inserito <u>NON</u> E' VALIDO</p>".
"Torna alla pagina di controllo";
}
endif;
?>