8797 sujets

Développement web côté serveur, CMS

Bonjour,

En PHP, lors d'une insertion dans un DOMDocument d'un attribut contenant un caractère spécial, celui ci est convertit automatiquement pour éviter les conflits avec les caractères spéciaux de XML :


$domDoc = $this->getDOMDocument();
$attribut->appendChild( $domDoc->createTextNode( "l'évenement" ) );


ce code va généré un document contenant un attribut CONTENT="l'évenement" (en fait ')

Comment éviter que l'apostrophe soit ainsi converti ?

Merci,
Lex
bonjour,

essayez un caractère d'echappement avant l'apostrophe
$domDoc = $this->getDOMDocument();
$attribut->appendChild( $domDoc->createTextNode( "l\'évenement" ) );
bonjour,

merci pour le coup de main, mais en fait, il ne s'agit pas d'un problème d'échappement. Le caractère ' est automatiquement encodé lors de l'insertion dans le DOMDocument, c'est à dire que "L\'événement" sera converti en "L\'événement", sans tenir compte de l'échappement.
C'est automatisé pour des raisons de sécurité.
Il y a plusieurs moyens de contre-carrer ça, tu peux pour commencer tenter de remplacer l'apostrophe anglophone par l'apostrophe français ’ ou bien traiter l'output avec html_entity_decode.
Une autre solution potentielle, la propriété "substituteEntities" de DOMDocument.
Modifié par Alpher (12 Jun 2009 - 19:01)