Aller au contenu

utf8_decode()

La fonction utf8_decode() est une fonction intégrée de PHP qui convertit une chaîne de caractères encodée en UTF-8 vers l'encodage ISO-8859-1. UTF-8 est un format d'encodage de caractères populaire qui prend en charge tous les caractères Unicode, tandis qu'ISO-8859-1 est un format d'encodage standard qui ne prend en charge qu'un ensemble limité de caractères.

Remarque : utf8_decode() est dépréciée depuis PHP 8.2. Pour les applications modernes, utilisez plutôt mb_convert_encoding($string, 'ISO-8859-1', 'UTF-8').

Cette fonction est utile lorsque vous disposez de texte encodé en UTF-8 qui doit être affiché ou utilisé dans un système ne prenant en charge que l'encodage ISO-8859-1. En utilisant utf8_decode(), vous pouvez convertir le texte vers l'encodage ISO-8859-1 et vous assurer qu'il est affiché ou utilisé correctement.

Syntaxe

La syntaxe de la fonction utf8_decode() est la suivante :

Décoder une chaîne UTF-8 en PHP

php
utf8_decode($string)

$string est la chaîne de caractères encodée en UTF-8 que vous souhaitez convertir vers l'encodage ISO-8859-1.

Exemples d'utilisation

Examinons quelques exemples pratiques d'utilisation de utf8_decode() en PHP.

Exemple 1 : Conversion de texte encodé en UTF-8 vers ISO-8859-1

Supposons que vous ayez une chaîne de caractères encodée en UTF-8 que vous souhaitez convertir vers l'encodage ISO-8859-1. Vous pouvez utiliser la fonction utf8_decode() pour cela, comme suit :

Conversion de texte encodé en UTF-8 vers ISO-8859-1 en PHP

php
<?php

$text = "Zoë";
$iso_text = utf8_decode($text);
echo bin2hex($iso_text);

?>

Ce code définit une variable de chaîne $text contenant du texte encodé en UTF-8. Il utilise ensuite la fonction utf8_decode() pour convertir le texte vers l'encodage ISO-8859-1, et stocke le résultat dans $iso_text. Enfin, il affiche la représentation hexadécimale du texte encodé en ISO-8859-1.

Valeur de retour et séquences invalides : La fonction retourne la chaîne convertie, ou false en cas d'échec. Si l'entrée contient des séquences UTF-8 invalides, elles sont remplacées par un point d'interrogation (?).

Exemple 2 : Conversion de texte encodé en UTF-8 provenant d'un fichier XML

Supposons que vous ayez un fichier XML contenant du texte encodé en UTF-8 que vous souhaitez lire et convertir vers l'encodage ISO-8859-1. Vous pouvez utiliser la bibliothèque SimpleXML de PHP pour lire le fichier XML et la fonction utf8_decode() pour convertir le texte, comme suit :

Conversion de texte encodé en UTF-8 provenant d'un fichier XML en PHP

php
$xml = simplexml_load_file("data.xml");
foreach ($xml->item as $item) {
  $title = utf8_decode($item->title);
  $description = utf8_decode($item->description);
  echo "$title: $description\n";
}

Ce code charge un fichier XML data.xml à l'aide de la fonction simplexml_load_file(), et itère sur chaque <code><item></code> élément à l'aide d'une boucle foreach. À l'intérieur de la boucle, il utilise la fonction utf8_decode() pour convertir le texte encodé en UTF-8 des éléments <code><title></code> et <code><description></code> vers l'encodage ISO-8859-1, et stocke les résultats dans deux nouvelles variables $title et $description. Enfin, il affiche le texte encodé en ISO-8859-1 dans la console.

Pour que cet exemple fonctionne, data.xml doit contenir une structure similaire à celle-ci :

xml
<root>
  <item>
    <title>Example Title</title>
    <description>Example Description</description>
  </item>
</root>

Conclusion

Dans cet article, nous avons discuté de la fonction utf8_decode() de PHP et de la manière dont elle peut être utilisée pour convertir du texte encodé en UTF-8 en texte encodé en ISO-8859-1. Nous avons expliqué ce que fait la fonction, sa syntaxe, et fourni des exemples de son utilisation dans des scénarios pratiques. En suivant ces exemples, vous pouvez facilement utiliser utf8_decode() pour convertir du texte encodé en UTF-8 vers l'encodage ISO-8859-1 et vous assurer que votre texte est affiché ou utilisé correctement dans votre système.

Pratique

Que fait la fonction utf8_decode en PHP ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.