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.