2010-06-17 11 views
8

Mam oświadczenie preg match i sprawdza mecze, ale zastanawiałem się, jak można policzyć mecze. Każda rada doceniona.preg liczba meczów mecze

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

na przykład licznik tej wiadomości ciąg powinien prowadzić do 2 meczów

Odpowiedz

20
$message='[tag] [tag]'; 
echo preg_match_all('/\\[tag\\](?>\\s|$)/i', $message, $matches); 

daje 2. Zauważ, że nie możesz użyć \b, ponieważ granica słowa jest przed ], a nie po.

Zobacz preg_match_all.

+1

Tak, miałeś rację, muszę odświeżyć moje umiejętności. Dzięki Art, doceń ten przykład. – Scarface

+2

'\ b' * może * być użyte, wpłynęłoby tylko na to, co jest dopasowane (tzn. Po [tag] musiałby nastąpić znak słowny). – salathe

+1

dziękuję salathe docenić wejście – Scarface

5

preg_match już zwraca liczbę razy wzór dopasowanych.

Jednak będzie to 0 lub 1, ponieważ zatrzyma się po pierwszym dopasowaniu. Zamiast niego możesz użyć preg_match_all, ponieważ sprawdzi on cały łańcuch i zwróci całkowitą liczbę dopasowań.

3

Powinieneś użyć preg_match_all, jeśli chcesz dopasować wszystkie wystąpienia. preg_match_all zwraca liczbę dopasowań. preg_match zwraca tylko 0 lub 1, ponieważ pasuje tylko raz.

+0

dzięki Matej docenić to – Scarface

+0

Nie ma za co. –

3

Myślę, że potrzebujesz preg_match_all. Zwraca liczbę znalezionych dopasowań. preg_match zatrzymuje się po pierwszym.

+0

Tak, to, co polecili inni faceci. Dzięki Manos. – Scarface