mb_detect_encoding în PHP

Încearcă să ghicească în ce codare de caractere este scris un text.

Sintaxă
mb_detect_encoding(string $string, array|string|null $encodings = null, bool $strict = false): string|false

Ce face mb_detect_encoding

mb_detect_encoding verifică textul cu fiecare codare din listă și o returnează pe cea mai potrivită. Este utilă la importul fișierelor CSV sau text primite de la alte programe.

Detectarea este o estimare: un text fără diacritice este valid în aproape orice codare. Dă mereu o listă scurtă, cu codările pe care le aștepți, și $strict = true, ca un text invalid să nu fie acceptat.

Parametri

Parametru Descriere
$string Textul analizat.
$encodings Opțional. Codările încercate. Fără ea, se folosește mb_detect_order().
$strict Opțional. true acceptă doar codări în care textul este complet valid.

Ce returnează

Numele codării sau false dacă nu se potrivește niciuna.

Exemple

Exemplul 1: Texte în codări diferite

<?php
$lista = ["ASCII", "UTF-8", "ISO-8859-16"];

echo mb_detect_encoding("Iasi", $lista, true) . "\n";
echo mb_detect_encoding("Iași", $lista, true) . "\n";
echo mb_detect_encoding(mb_convert_encoding("Iași", "ISO-8859-16", "UTF-8"), $lista, true);

Rezultat

ASCII
UTF-8
ISO-8859-16

Exemplul 2: Convertirea unui fișier importat doar dacă e nevoie

<?php
$continut = mb_convert_encoding("Brașov;Țăndărei", "ISO-8859-16", "UTF-8");

$codare = mb_detect_encoding($continut, ["UTF-8", "ISO-8859-16"], true);
if ($codare !== "UTF-8") {
    $continut = mb_convert_encoding($continut, "UTF-8", $codare);
}
echo "$codare: $continut";

Rezultat

ISO-8859-16: Brașov;Țăndărei

Greșeli frecvente

  • Te bazezi pe detectare pentru texte foarte scurte sau fără diacritice. Rezultatul poate fi oricare codare din listă. Dacă știi sursa, scrie codarea explicit.

Comenzi înrudite

  • mb_check_encoding: Verifică dacă un text este valid într-o anumită codare, de exemplu dacă este UTF-8 corect.
  • mb_convert_encoding: Convertește un text dintr-o codare de caractere în alta, de exemplu din ISO-8859-16 în UTF-8.
  • mb_detect_order: Setează sau returnează lista de codări încercate, în ordine, de mb_detect_encoding.