PHP检测字符串中多个连续的特殊字符

时间:2018-07-31 08:47:34

标签: php special-characters spam-prevention

我每天都通过联系表收到大量垃圾邮件。这些垃圾邮件的内容与本例非常相似:

Ïîñëåäíèè íîâîñòè àðìåíèè ÷èòàéòå íà ñàéòå somedomainname.com

对于这种特定类型的垃圾邮件,我想添加PHP对3个连续特殊字符的检测,因为它永远不会出现在合法电子邮件中(至少最近10年没有这种情况)。什么是实现此目的的聪明方法?

编辑:我不确定如何对这些字符进行分类。如示例所示,它们都具有某种重音。

2 个答案:

答案 0 :(得分:1)

基于另一个问题: here

您可以对邮件内容使用正则表达式:

if (preg_match('/([Ïîñëåäíèè]){3}/', $contentOfMail))
{
    // $contentOfMail contains at least one set of 3 specials characters back to back
}

我让您在正则表达式中填写所有需要匹配的字符

答案 1 :(得分:0)

要检查是否存在一个或多个字母,可以使用本机function of PHP strpos作为以下示例。否则,您也可以使用正则表达式,但是对于基本验证和性能问题,建议使用本机PHP函数。

 $mystring = $_POST['message'];
    $findme   = 'Ïîñëåäíèè';

        $pos = strpos($mystring, $findme);

        // Note our use of ===.  Simply == would not work as expected
       // because the position of 'a' was the 0th (first) character.
if ($pos === false) {
    echo "The string '$findme' was not found in the string '$mystring'";
} else {
    echo "The string '$findme' was found in the string '$mystring'";
    echo " and exists at position $pos";
}