mb_strstr / mb_stristr în PHP

Returnează partea unui text de la prima apariție a unui subșir (sau dinaintea ei), corect pentru UTF-8.

Sintaxă
mb_strstr(string $haystack, string $needle, bool $before_needle = false, ?string $encoding = null): string|false

Ce face mb_strstr / mb_stristr

mb_strstr este varianta multibyte a lui strstr: returnează tot ce urmează după prima apariție a lui $needle, inclusiv acesta, sau partea dinainte cu $before_needle = true.

mb_stristr face același lucru fără să țină cont de majuscule, inclusiv la diacritice (Ș și ș sunt egale). Pentru texte UTF-8 corecte, strstr dă de obicei același rezultat; diferența apare mai ales la căutarea fără majuscule.

Parametri

Parametru Descriere
$haystack Textul în care se caută.
$needle Textul căutat.
$before_needle Opțional. true returnează partea dinainte.
$encoding Opțional. Codarea textului.

Ce returnează

Bucata de text sau false.

Exemple

Exemplul 1: Înainte și după un separator

<?php
$produs = "Țesătură — bumbac 100%";

echo mb_strstr($produs, " — ", true) . "\n";
echo mb_strstr($produs, " — ");

Rezultat

Țesătură
 — bumbac 100%

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

<?php
$titlu = "Ghid: ȘCOALA de vară PHP";

var_dump(stristr($titlu, "școala"));
var_dump(mb_stristr($titlu, "școala"));

Rezultat

bool(false)
string(20) "ȘCOALA de vară PHP"

Greșeli frecvente

  • Uiți că rezultatul include și textul căutat. Dacă vrei doar ce urmează, taie-l cu mb_substr($rezultat, mb_strlen($needle)).

Comenzi înrudite

  • strstr / stristr: Returnează partea dintr-un text care începe cu prima apariție a altui text (sau partea dinaintea ei).
  • mb_strrchr / mb_strrichr: Returnează partea unui text de la ultima apariție a unui subșir (sau dinaintea ei), corect pentru UTF-8.
  • mb_strpos / mb_stripos: Găsește poziția unui text în alt text, numărată în caractere, nu în octeți.