mb_substr_count
funkcja
Zlicza liczbę wystąpień podciągu w ciągu wielobajtowym, liczy znaki poprawnie w UTF-8.
mb_substr_count(string $haystack, string $needle, ?string $encoding = null): int
mb_substr_count zlicza, ile razy $needle pojawia się w $haystack, w pełni obsługując kodowania wielobajtowe. Jest wielobajtowym odpowiednikiem substr_count(). W praktyce dla porównywania samych ciągów UTF-8 obie funkcje zwrócą ten sam wynik — różnica ujawnia się, gdy $needle zawiera znaki wielobajtowe i chcesz mieć gwarancję bezpiecznego działania niezależnie od kodowania.
<?php
declare(strict_types=1);
echo mb_substr_count('Łódź i łódź', 'ó', 'UTF-8'); // wynik: 2
echo mb_substr_count('banana', 'an', 'UTF-8'); // wynik: 2
echo mb_substr_count('Zażółć żółw', 'ó', 'UTF-8'); // wynik: 2
// Wyszukiwanie jest rozróżniające wielkość liter:
echo mb_substr_count('Łódź Łódź', 'Ł', 'UTF-8'); // wynik: 2
echo mb_substr_count('Łódź Łódź', 'ł', 'UTF-8'); // wynik: 0
// Bez nakładania się (overlapping):
echo mb_substr_count('aaa', 'aa', 'UTF-8'); // wynik: 1 (nie 2)
Wyszukiwanie nie jest case-insensitive — jeśli potrzebujesz porównania bez uwzględnienia wielkości liter, najpierw znormalizuj oba ciągi przez mb_strtolower().