mb_scrub în PHP

Înlocuiește secvențele de octeți invalide dintr-un text cu caracterul de substituție, ca textul să devină valid.

Sintaxă
mb_scrub(string $string, ?string $encoding = null): string

Ce face mb_scrub

Un text poate conține octeți care nu formează caractere valide, de exemplu după o tăiere cu substr. mb_scrub păstrează partea validă și pune caracterul de substituție (implicit ?, setabil cu mb_substitute_character) în locul secvențelor stricate.

După mb_scrub textul poate fi transmis fără probleme lui json_encode sau unei baze de date.

Parametri

Parametru Descriere
$string Textul curățat.
$encoding Opțional. Codarea textului.

Ce returnează

Textul valid.

Exemple

Exemplul 1: Text tăiat greșit, reparat înainte de JSON

<?php
$taiat = substr("Iași", 0, 3);

var_dump(json_encode(["oras" => $taiat]));
var_dump(json_encode(["oras" => mb_scrub($taiat)]));

Rezultat

bool(false)
string(14) "{"oras":"Ia?"}"

Greșeli frecvente

  • Folosești mb_scrub ca să repari un text într-o codare veche (de exemplu ISO-8859-16). Diacriticele devin ?; textul trebuie convertit cu mb_convert_encoding.

Comenzi înrudite

  • mb_check_encoding: Verifică dacă un text este valid într-o anumită codare, de exemplu dacă este UTF-8 corect.
  • mb_substitute_character: Setează caracterul pus în locul caracterelor invalide sau imposibil de convertit.
  • json_encode: Transformă un tablou sau obiect PHP în text JSON.