J'ai un fichier php qui imprime un xml basé sur un db MySQL.Erreur XML à l'esperluette (&)
Je reçois une erreur à chaque fois exactement au point où il y a un signe &.
Voici quelques-uns php:
$query = mysql_query($sql);
$_xmlrows = '';
while ($row = mysql_fetch_array($query)) {
$_xmlrows .= xmlrowtemplate($row);
}
function xmlrowtemplate($dbrow){
return "<AD>
<CATEGORY>".$dbrow['category']."</CATEGORY>
</AD>
}
La sortie est ce que je veux, à savoir le fichier génère la bonne catégorie, mais donne toujours une erreur.
L'erreur dit: xmlParseEntityRef: pas de nom
Et il souligne le caractère exact qui est un signe &.
Ce ne se plaint que si le $dbrow['category']
est quelque chose avec un & signe dans, par exemple: « voitures & camions », ou « ordinateurs & téléphones ».
Quelqu'un sait-il quel est le problème? BTW: J'ai l'encodage défini sur UTF-8 dans tous les documents, ainsi que la sortie xml.
(addition, mais pour l'affiche) Donc, utilisez & pour lui échapper correctement - bien qu'au lieu de l'interpolation de chaîne (muette), vous devriez utiliser quelque chose qui * comprend * XML (par exemple, que se passe-t-il lorsque l'entrée contient "<"? –
Ou, m minerai compact, 'htmlspecialchars ($ string, ENT_QUOTES);' – Wrikken
envelopper dans matthy