我想检查一下,如果$ _POST [msg]包含一个超过30个字符的单词(没有空格),那么你就无法写出:
example1:
asdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsdsddsasdsdsdsdsd
例2: 你好,我的名字是asdoksdosdkokosdkosdkodskodskodksosdkosdkokodsdskosdkosdkodkoskoskosdkosdkosdkosdsdksdoksd
(注意没有空格)。
我该怎么做?
答案 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