2011-01-16 13 views
1

Ich möchte die E-Mail a # $% # $ @ [email protected]#$#$2344324.com zu [email protected] zu sanieren.
Ich versuchte und fehlgeschlagen
echo filter_var ("a # $% # $ @ [email protected]#$ #$2344324.com", FILTER_SANITIZE_EMAIL); // Ergebnis: a # $% # $ @ [email protected]#$#$2344324.comentfernen Sie unerwünschte Zeichen in E-Mail mit Preg-ersetzen

Ich muss Sonderzeichen in einer E-Mail zuschneiden (bereinigen, um Sonderzeichen zu entfernen). Ich habe den folgenden Code verwendet, aber ich war nicht erfolgreich.

$string = preg_replace("/^[a-zA-Z0-9._%+-][email protected](?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}$/", "", "a#$%#[email protected]@#$#$2344324.com"); 

echo $string;//result: [email protected] -- unwanted characters trimmed here. 
+0

versuchen und zu erklären, was Sie zu tun versuchen, wie Sie versuchen, es zu tun, was Sie erwarten zu sehen, und warum Was Sie gesehen haben, hat diese Erwartungen nicht erfüllt. Es gibt echte Experten auf dieser Seite, obwohl in der Regel ihre Expertise in Software ist, nicht Hellsehen – davin

+1

gibt es keinen Sinn in einer solchen Aktion –

+2

Was ist der Punkt/Regel der Drehung 'a # $% # $ @ [email protected]#$ #$2344324.com 'in' a @ b.com'? – Gumbo

Antwort

0

Es gibt bereits eine RFC-basierte Lösung hier: http://fightingforalostcause.net/misc/2006/compare-email-regex.php

function is_valid_email_address($email){ 

     $qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]'; 

     $dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'; 

     $atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c'. 
      '\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'; 

     $quoted_pair = '\\x5c[\\x00-\\x7f]'; 

     $domain_literal = "\\x5b($dtext|$quoted_pair)*\\x5d"; 

     $quoted_string = "\\x22($qtext|$quoted_pair)*\\x22"; 

     $domain_ref = $atom; 

     $sub_domain = "($domain_ref|$domain_literal)"; 

     $word = "($atom|$quoted_string)"; 

     $domain = "$sub_domain(\\x2e$sub_domain)*"; 

     $local_part = "$word(\\x2e$word)*"; 

     $addr_spec = "$local_part\\x40$domain"; 

     return preg_match("!^$addr_spec$!", $email) ? true : false; 
    } 
Verwandte Themen