mb_substitute_character în PHP

Setează caracterul pus în locul caracterelor invalide sau imposibil de convertit.

Sintaxă
mb_substitute_character(string|int|null $substitute_character = null): string|int|bool

Ce face mb_substitute_character

Când mb_convert_encoding sau mb_scrub întâlnesc un caracter care nu poate fi reprezentat, îl înlocuiesc cu caracterul de substituție. Implicit este ? (codul 63).

Poți da un cod Unicode (de exemplu 0x2A pentru *), "none" (caracterul este eliminat), "long" (se scrie codul, de exemplu U+219) sau "entity" (entitate HTML, de exemplu ș).

Parametri

Parametru Descriere
$substitute_character Opțional. Un cod Unicode sau unul dintre textele "none", "long", "entity".

Ce returnează

Setarea curentă (fără parametru) sau true după setare.

Exemple

Exemplul 1: Diacritice convertite în ASCII

<?php
$text = "Iași, 15 €";

echo mb_substitute_character() . ": " . mb_convert_encoding($text, "ASCII", "UTF-8") . "\n";

mb_substitute_character(0x2A);
echo mb_convert_encoding($text, "ASCII", "UTF-8") . "\n";

mb_substitute_character("none");
echo mb_convert_encoding($text, "ASCII", "UTF-8") . "\n";

mb_substitute_character("long");
echo mb_convert_encoding($text, "ASCII", "UTF-8");

Rezultat

63: Ia?i, 15 ?
Ia*i, 15 *
Iai, 15 
IaU+219i, 15 U+20AC

Greșeli frecvente

  • Folosești "none" ca să „scapi” de diacritice și numele devin greu de citit („Iai”). Pentru texte fără diacritice înlocuiește literele cu strtr.

Comenzi înrudite

  • mb_convert_encoding: Convertește un text dintr-o codare de caractere în alta, de exemplu din ISO-8859-16 în UTF-8.
  • mb_scrub: Înlocuiește secvențele de octeți invalide dintr-un text cu caracterul de substituție, ca textul să devină valid.
  • strtr: Înlocuiește caractere sau texte după o listă de perechi, fără să înlocuiască de două ori același loc.