需要正则表达式来过滤掉.ru和其他垃圾邮件地址

时间:2013-11-27 12:14:44

标签: php regex

我已经使用php的filter_var($email, FILTER_VALIDATE_EMAIL)来查明该地址是否有效。

我要继续阻止.ru电子邮件地址。我应该使用什么正则表达式和代码?您阻止的任何其他垃圾邮件或地址也将受到赞赏。

我试过这个,但想确保我正确抓住它并抓住其他垃圾邮件。

function endsWith($haystack, $needle){
    $length = strlen($needle);
    return (substr($haystack, -$length) === $needle);
}

谢谢VG:

function russianEmail($email,$endings = array('\.ru')){
    return (preg_match('/('.implode('|', $endings).')$/i', $email))?true:false;
}

2 个答案:

答案 0 :(得分:3)

您可以使用以下代码匹配多个域区域(或只是结尾):

$endings = array('\.ru'); // you can add zones here
preg_match('/('.implode('|', $endings).')$/i', $email);

此正则表达式也不区分大小写。

答案 1 :(得分:0)

这是我使用的(但不是我自己的工作): 将您想要发送垃圾邮件的黑暗地点替换为russianbrides.com的链接。

function my_inArray($needle, $haystack) {
//  this function allows wildcards in the array to be searched
    foreach ($haystack as $value) {
    if (true === fnmatch($value, $needle)) {
    return true;
    }
}
return false;
}

//阻止通配符电子邮件。

$deny = array(
"*@hotmobilephoneoffers.com",
"*@*.ru",
"*@*.su",
);

if (my_inarray (strtolower($email_from), $deny)) {
    header("location: http://www.russianbrides.com/");
    exit();
}