PHP preg_match匹配连续的换行符

时间:2016-05-22 06:47:43

标签: php regex newline

我正在尝试阻止我网站上的某些帖子,这主要是为了让它看起来像包含一些内容但只是垃圾邮件。具体来说,帖子是一些随机单词,一些换行符和一个随机字符。

所以,我知道一些合法用户可能会使用两个换行符(在段落之间创建一个空行),但我认为3+可以被标记为垃圾邮件。

我在regex101上测试了这个正则表达式并且它工作正常,但是当我在我的网站上测试时,从未触发,任何关于为什么的想法?当我取消注释回显线时,它会显示我的测试数据的数字4,所以我知道它看到了换行符..我的正则表达式是不正确形成的?!

测试数据:

var touchmove = false;
$(window).on("touchmove",function(){
    touchmove = true;
});

$(window).on("touchend",function(e){
    if (!touchmove){
        e.preventDefault();
        e.stopPropagation();
        e.target.click();
    }
        else{
            touchmove = false;
        }
});

代码:

This is a potential


spam post

1 个答案:

答案 0 :(得分:0)

数据可能包含CRLF,而不只是LF

substr_count测试不关心交错CR,但你的正则表达式模式确实如此。

使用(\r?\n)代替\n同时允许CRLFLF(不同的浏览器/操作系统,可能会使用不同的新行):< / p>

if (preg_match('/(\r?\n){3,}./',  $lowercaseBody)){
    error("Stop Spamming my chan you .");
}