mb_strpos / mb_stripos în PHP

Șiruri multibyte (mb_) PHP 4.0.6+ (mb_stripos: PHP 5.2+)

Găsește poziția unui text în alt text, numărată în caractere, nu în octeți.

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

Ce face mb_strpos / mb_stripos

mb_strpos funcționează ca strpos, dar poziția returnată este în caractere. Este varianta potrivită când folosești apoi poziția în mb_substr.

mb_stripos caută fără să țină cont de litere mari și mici, inclusiv pentru diacritice (Ș și ș sunt considerate la fel). Ambele returnează false dacă textul nu este găsit.

Parametri

Parametru Descriere
$haystack Textul în care se caută.
$needle Textul căutat.
$offset Opțional. Poziția, în caractere, de la care începe căutarea.
$encoding Opțional. Codarea textului.

Ce returnează

Poziția găsită (în caractere) sau false.

Exemple

Exemplul 1: Poziție în octeți și în caractere

<?php
$text = "Școala din Iași";

echo strpos($text, "Iași") . "\n";
echo mb_strpos($text, "Iași");

Rezultat

12
11

Exemplul 2: Căutare fără majuscule, cu diacritice

<?php
$titlu = "ȘCOALA DE VARĂ PHP";

var_dump(stripos($titlu, "școala"));
var_dump(mb_stripos($titlu, "școala"));

Rezultat

bool(false)
int(0)

Greșeli frecvente

  • Verifici cu if (mb_strpos(...)). Dacă textul este găsit la poziția 0, condiția este falsă. Compară cu !== false.

Comenzi înrudite

  • strpos: Găsește poziția primei apariții a unui text în alt text.
  • stripos: Găsește poziția primei apariții a unui text, fără să țină cont de litere mari și mici.
  • mb_substr: Extrage o bucată dintr-un text după poziții în caractere, fără să strice diacriticele.
  • str_contains: Verifică dacă un text conține alt text. Returnează true sau false.