preg match count совпадений - PullRequest
11 голосов
/ 17 июня 2010

У меня есть оператор preg match, и он проверяет совпадения, но мне было интересно, как вы можете считать совпадения.Любой совет приветствуется.

$message='[tag] [tag]';
preg_match('/\[tag]\b/i',$message);

, например, счет этой строки сообщения должен привести к 2 совпадениям

Ответы [ 5 ]

23 голосов
/ 17 июня 2010
$message='[tag] [tag]';
echo preg_match_all('/\\[tag\\](?>\\s|$)/i', $message, $matches);

дает 2. Обратите внимание, что вы не можете использовать \b, потому что граница слова находится перед ], а не после.

См. preg_match_all .

10 голосов
/ 17 июня 2010

preg_match уже возвращает количество совпадений шаблона.

Однако, это будет только 0 или 1, поскольку он останавливается после первого матча.Вместо этого вы можете использовать preg_match_all , поскольку он будет проверять всю строку и возвращать общее количество совпадений.

4 голосов
/ 17 июня 2010

Вы должны использовать preg_match_all, если хотите соответствовать всем случаям. preg_match_all возвращает количество совпадений. preg_match возвращает только 0 или 1, поскольку совпадает только один раз.

3 голосов
/ 17 июня 2010

Я думаю, вам нужно preg_match_all .Возвращает количество найденных совпадений.preg_match останавливается после первого.

0 голосов
/ 15 января 2019

Вы можете использовать библиотеку T-Regx с методом count() (и даже автоматическими разделителями):

$count = pattern('\[tag]\b', 'i')->match('[tag] [tag]')->count();

$count // 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...