[PHP] Dubbio esistenzaile: Regex email e stampa valori trovati..

otto9due

Utente Attivo
22 Feb 2014
591
25
28
Ragazzi non riesco a capire cosa non vada in questo script.. Sto letteralmente impazzendo:
PHP:
<?php
$mailsgrezze = '<a href="http://www.w3schools.com">[email protected]</a><a href="http://www.w3schools.com">[email protected]</a><a href="http://www.w3schools.com">[email protected]</a><a href="http://www.w3schools.com">[email protected]</a><a href="http://www.w3schools.com">[email protected]</a>   <a href="http://www.w3schools.com">[email protected]</a>';

$pattern = '/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/';

preg_match_all($pattern, $mailsgrezze, $res);

var_dump($res);
die();
?>
$res dovrebbe restituirmi in pratica i valori, cioè le varie email rintracciate.. es: [email protected] ecc..
Ma non è così, e non capisco perchè!
 
Il problema che seppure semplifico ulteriormente il pattern il problema rimane..
PHP:
<?php
$mailsgrezze = '<a href="http://www.hools.com">[email protected]</a><a href="http://www.wchools.com">[email protected]</a><a href="http://www.ools.com">[email protected]</a><a href="http://www.wols.com">[email protected]</a><a href="http://www.wools.com">[email protected]</a>   <a href="http://www.wools.com">[email protected]</a>';

$pattern = '/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/';

preg_match_all($pattern, $mailsgrezze, $res);
var_dump($res);
die();
?>

e neanche così... Dove sbaglio???

PHP:
<?php
$mailsgrezze = '<a href="http://www.w3schools.com">[email protected]</a><a href="http://www.w3schools.com">[email protected]</a><a href="http://www.w3schools.com">[email protected]</a><a href="http://www.w3schools.com">[email protected]</a><a href="http://www.w3schools.com">[email protected]</a>   <a href="http://www.w3schools.com">[email protected]</a>';

$pattern = '/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/';

if (preg_match_all($pattern, $mailsgrezze)){
echo 'ok';
}else{
echo 'No';
}
die();
?>
 
Ultima modifica:
ciao
prova così
PHP:
<?php
$mailsgrezze = '<a href="http://www.hools.com">[email protected]</a><a href="http://www.wchools.com">[email protected]</a><a href="http://www.ools.com">[email protected]</a><a href="http://www.wols.com">[email protected]</a><a href="http://www.wools.com">[email protected]</a>   <a href="http://www.wools.com">[email protected]</a>';

$pattern = '/[a-zA-Z0-9._%+-]+@+[a-zA-Z0-9.-]+\.+[a-zA-Z]{2,4}/';

preg_match_all($pattern, $mailsgrezze, $res);
echo "<pre>";//messo per vedere meglio il var_dump
var_dump($res);
echo "</pre>";
?>
 
WOW.. Ma perchè accade questa cosa perdonami? E' la prima volta che vedo una cosa del genere..
Hai aggiunto solo questo? Precisamente a cosa serve e quando va usata.. Questa è una chicca!
Codice:
echo "<pre>"; // <----- solo questo
var_dump($res);
echo "</pre>"; // <----- e questo hai aggiunto?? O.o

No, no, hai corretto anche il pattern.. c'era qulche + di troppo a quanto pare. Perchè funziona anche senza il <pre>
 
  • Like
Reactions: otto9due
Sisi, Grazie mille. Siete sempre fantastici ;)
Pensavo di aver sbagliato a scrivere la funzione.. :p
Ho giusto modificato qualcosina sul pattern altrimenti mi prendeva mail con più chiocciole o più punti prima dell'estensione..
Così :
PHP:
$pattern = '/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}/';
 

Discussioni simili