mb_strpos

funkcja

Zwraca pozycję pierwszego wystąpienia podciągu w ciągu wielobajtowym, licząc w znakach, a nie w bajtach.

mb_strpos(string $haystack, string $needle, int $offset = 0, ?string $encoding = null): int|false

mb_strpos działa jak strpos, ale liczy znaki, a nie bajty — to kluczowa różnica przy polskich tekstach w UTF-8. W UTF-8 polskie litery zajmują 2 bajty, więc strpos zwróci pozycję bajtową, a mb_strpos pozycję znakową. Gdy szukanego ciągu nie ma, zwraca false — zawsze porównuj przez === false. Jeśli nie podasz $encoding, użyte zostanie domyślne kodowanie ustawione w mb_internal_encoding().

<?php
declare(strict_types=1);

var_dump(mb_strpos('Łódź', 'd')); // wynik: int(2) — znaki: Ł(0) ó(1) d(2) ź(3)
var_dump(strpos('Łódź', 'd'));    // wynik: int(4) — bajty: Ł=2B ó=2B d=bajt 4
📘 Naucz się w lekcji →