Codage des caractères
Les chaînes de caractères manipulés par SimpleXML sont décodées
par défaut. SimpleXML utilise la balise initiale du fichier
pour devenir l'encodage utilisé, et transforme le texte
en UTF-8. Pour avoir un affichage correct, avec un jeu de
caractères de votre choix, utilisez la fonction mb_convert_encoding(),
de cette manière :
mb_convert_encoding($livre->titre,'iso-8859-1','utf-8');
Si vous précisez le jeu de caractères utilisé dans la balise
d'entête XML, SimpleXML assurera la transformation en UTF-*
pour vous. Par exemple :
<?xml version="1.0" encoding="iso-8859-1"?>
Limitations
:
SimpleXML est une toute nouvelle extension, et se révèle
encore jeune. De plus, son approche spécifique du traitement
XML, destinée à simplifier la programmation, lui fait laisser
de coté l'exhaustivité fonctionnelle que d'autres extensions
déploient. Il y a donc une limite naturelle à bien cerner
entre les bogues, les fonctionnalités qui seront développées,
et celles qui ne seront pas intégrées. Voici quelques limitations
connues.
SimpleXML n'est pas capable de gérer les mélanges entre
les balises le texte. Par exemple :
<?php
$html = simplexml_load_string('<P>Ceci est une phrase
en <font style="font-weight: bolder">gras</font>.</P>');
foreach ($html as $t => $c) {
print $t." : ".$c."<br />\n";
}
?>
font : gras<br />
|
Forum |
|
Réagissez
dans les
forums de JDN Développeurs
|
Au résultat, nous obtenons la balise font, avec le contenu
" gras ". Le début et la fin de la phrase ont été supprimé.
SimpleXML n'accepte pas le mélange de genres. Pour lui,
le contenu d'une balise est soit une autre balise, soit
du texte. Dans le second cas, il va générer une chaîne de
caractères, et dans le premier, un tableau. Mais si la balise
contient en fait un mélange de texte et de balises, alors
le texte est simplement ignoré. Il n'est donc pas facile
d'analyser du code XHTML avec SimpleXML.