Я пытаюсь проверить строку на наличие всех совпадений с образцом нескольких слов, которые являются началом слов. Если не все шаблоны совпадают, я хочу рассматривать запрос как False. Начало проверки слов работает, но я получаю повторяющиеся совпадения, что мне кажется удивительным, поскольку я думал, что после того, как для слова было найдено одно совпадение, оно больше не будет проверять это слово. Возможно, мне нужно как-то ограничить тесты одним матчем.
Я представил, что если бы я тестировал 3 слова, то успешный тест вернул бы 3.
Как видно из примера, возвращаемые значения вводят в заблуждение. Я получаю положительное значение, которое больше, чем количество слов, которые я тестирую. В случае несоответствующей группы я все еще получаю значение выше, чем количество слов, которые нужно проверить, из-за множественных совпадений некоторых слов.
Я предполагаю, что я что-то не до конца понял или как-то мне нужно форсировать ситуацию И.
Я искал ответы в Google, но ни один из них не подходит для моей проблемы.
$image = 'After A!!BC DEF hello bugggy bad Sled bob bobert robob Triumph 2000 Roadster clearing bobby Sledmere ^ August 2014 ^ error';
$result = preg_match_all($query, $image, $matches);
$query = '#\b(bob|bug|sled)#i'; // ALL MATCH
Return Value 6 [ bob x 3, bug x 1, sled x 1]
$query = '#\b(bob|bug|led)#i'; // Two matches 'led' fails
Return Value 4 [ bob x 3, bug x 1, led x 0]