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

PHP检测字符串中的多个连续特殊字符,php,special-characters,spam-prevention,Php,Special Characters,Spam Prevention,每天,我都会通过联系方式收到大量的垃圾邮件。这些垃圾邮件的内容与以下示例非常相似: Ïîñëåäíèè íîâîñòè àðìåíèè ÷èòàéòå íà ñàéòå somedomainname.com 对于这种特定类型的垃圾邮件,我想添加3个连续特殊字符的PHP检测,因为它永远不会出现在合法的电子邮件中(至少在过去10年中没有)。实现这一目标的明智方法是什么 编辑:我不确定该如何对这些字符进行分类。它们都有某种口音,如示例所示。基于另一个问题: 您可以对邮件内容使用正则表达式: if

每天,我都会通过联系方式收到大量的垃圾邮件。这些垃圾邮件的内容与以下示例非常相似:

Ïîñëåäíèè íîâîñòè àðìåíèè ÷èòàéòå íà ñàéòå somedomainname.com
对于这种特定类型的垃圾邮件,我想添加3个连续特殊字符的PHP检测,因为它永远不会出现在合法的电子邮件中(至少在过去10年中没有)。实现这一目标的明智方法是什么


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

基于另一个问题:

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

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

我允许您在正则表达式中填充所有需要匹配的字符。要检查是否存在一个或多个字母,您可以使用本机,如下所示。否则,您也可以使用正则表达式,但对于基本验证和性能问题,建议使用本机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";
}

如此大量的垃圾邮件有多少?在这种情况下,没有“特殊字符”这样的东西。你似乎想把utf-8译成拉丁语-1。使用验证码怎么样?@simon reason我问了这个问题,你怎么知道它永远不会出现在合法的电子邮件中?如果发件人碰巧用韩语给你写信,或者只是碰巧喜欢表情符号呢?您最好使用一些替代方法,例如IP阻塞或类似方法。这将找到特定的字符串。我正在寻找任何随机序列的“特殊”字符。