Вы можете проверить, содержит ли строка совпадение следующего шаблона:
[A-Za-z]{20}
Конструкция [A-Za-z]
создает класс символов, который соответствует прописным и строчным буквам ASCII.{20}
- это синтаксис с конечным повторением.Достаточно проверить, есть ли совпадение, содержащее 20 букв, потому что если есть слово, содержащее больше, оно содержит не менее 20.
Ссылки
Фрагмент PHP
Вот пример использования:
$strings = array(
"hey what the (@#$&*!@^#*&^@!#*^@#*@#*&^@!*#!",
"now this one is just waaaaaaaaaaaaaaaaaaay too long",
"12345678901234567890123 that's not a word, is it???",
"LOLOLOLOLOLOLOLOLOLOLOL that's just unacceptable!",
"one-two-three-four-five-six-seven-eight-nine-ten",
"goaaaa...............aaaaaaaaaalll!!!!!!!!!!!!!!",
"there is absolutely nothing here"
);
foreach ($strings as $str) {
echo $str."\n".preg_match('/[a-zA-Z]{20}/', $str)."\n";
}
Это печатает ( как видно на ideone.com ):
hey what the (@#$&*!@^#*&^@!#*^@#*@#*&^@!*#!
0
now this one is just waaaaaaaaaaaaaaaaaaay too long
1
12345678901234567890123 that's not a word, is it???
0
LOLOLOLOLOLOLOLOLOLOLOL that's just unacceptable!
1
one-two-three-four-five-six-seven-eight-nine-ten
0
goaaaa...............aaaaaaaaaalll!!!!!!!!!!!!!!
0
there is absolutely nothing here
0
Как указано в шаблоне, preg_match
имеет значение true, когда есть «слово» (как определено в последовательностибукв) длиной не менее 20 символов.
Если это определение слова не подходит, просто измените шаблон на, например, \S{20}
.То есть любая последовательность из 20 непробельных символов;теперь все, кроме последней строки, совпадают ( как видно на ideone.com ).