mb_convert_variables în PHP

Convertește direct codarea uneia sau mai multor variabile, inclusiv a tablourilor, și returnează codarea sursă.

Sintaxă
mb_convert_variables(string $to_encoding, array|string $from_encoding, mixed &$var, mixed &...$vars): string|false

Ce face mb_convert_variables

mb_convert_variables modifică variabilele primite (prin referință) și convertește toate textele din ele, inclusiv din tablourile interioare. Este utilă când primești o structură întreagă de date într-o codare veche.

$from_encoding poate fi o listă de codări; funcția o detectează pe cea potrivită și o returnează.

Parametri

Parametru Descriere
$to_encoding Codarea în care se convertește.
$from_encoding Codarea sursă sau o listă de codări posibile.
$var, ...$vars Variabilele convertite. Sunt modificate direct.

Ce returnează

Codarea sursă folosită sau false la eroare.

Exemple

Exemplul 1: Un rând importat dintr-un sistem vechi

<?php
$rand = ["oras" => "Iași", "judet" => "Iași", "strada" => "Lăpușneanu"];
mb_convert_variables("ISO-8859-16", "UTF-8", $rand);
echo "Octeți în ISO-8859-16: " . strlen($rand["strada"]) . "\n";

$sursa = mb_convert_variables("UTF-8", ["UTF-8", "ISO-8859-16"], $rand);
echo "Codare detectată: $sursa\n";
echo implode(", ", $rand);

Rezultat

Octeți în ISO-8859-16: 10
Codare detectată: ISO-8859-16
Iași, Iași, Lăpușneanu

Greșeli frecvente

  • Te aștepți ca funcția să returneze textul convertit. Returnează doar numele codării sursă: rezultatul este în variabilele date.

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_detect_encoding: Încearcă să ghicească în ce codare de caractere este scris un text.