PHP:单词检查30个字符

时间:2010-11-18 08:51:23

标签: php

我想检查一下,如果$ _POST [msg]包含一个超过30个字符的单词(没有空格),那么你就无法写出:

example1:

asdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsddsasdsdsdsdsd

例2: 你好,我的名字是asdoksdosdkokosdkosdkodskodskodksosdkosdkokodsdskosdkosdkodkoskoskosdkosdkosdkosdsdksdoksd

(注意没有空格)。

我该怎么做?

5 个答案:

答案 0 :(得分:2)

您可以使用preg_match查找以下内容......

if (preg_match('/\S{31,}/', $_POST['msg']))
{
     //string contains sequence of non-spaces > 30 chars
}

/ S匹配任何非空格字符,并且是与任何空格匹配的/ s的倒数。请参阅PCRE escape sequences

上的手册页

答案 1 :(得分:2)

您可以使用正则表达式\w{31,}查找包含31个或更多字符的字词:

if(preg_match('/\w{31,}/',$_POST['msg'])) {
        echo 'Found a word >30 char in length';
}

如果要查找长度为31个或更多字符的非空格字符组,可以使用:

if(preg_match('/\S{31,}/',$_POST['msg'])) {
        echo 'Found a group of non-space characters >30 in length';
}

答案 2 :(得分:0)

首先找到单词:

// words are separated by space usually, add more logic here
$words = explode(' ', $_POST['msg']);

foreach($words as $word) {
    if(strlen($word) > 30) { // if the word is bigger than 30
        // do something
    }
}

答案 3 :(得分:0)

这个怎么样?只是逻辑差异

if (strlen(preg_replace('#\s+#', '', $_POST['msg'])) > 30) {
    //string contain more then 30 length (spaces aren't counted)
}

答案 4 :(得分:-1)

首先将输入分为单词:

explode(" ", $_POST['msg']);

然后获取最大长度字符串:

max(explode(" ", $_POST['msg']));

并查看是否大于30:

strlen(max(explode(" ", $_POST['msg']))) > 30