8768 sujets

Développement web côté serveur, CMS

Bonjour à tous
Le programme php a crée un DOMDocument représentant un document HTML
Il récupère dans un fichier une chaîne de caractères en HTML

<div>
  <h2 lang="fr">Algue N°2</h2>
  <p lang="fr">Vert</p>
</div>]

L'objectif est de faire de cette chaîne de caractères un DOMElement pour l'insérer dans le document HTML.
Je crois me souvenir qu'il existe une fonction PHP qui permette de faire cela, mais je n'arrive plus à la retrouver.
Quelqu'un connait il la solution?
Merci de votre aide
Voici le code que j'utilise pour contourner le problème, mais j'espère qu'on peut trouver mieux
$dom étant l'objet DOMDocument représentant la page HTML:

$element = $dom -> createDocumentFragment();  //$dom = DOMDocument en cours
$newDom = new DOMDocument();
$newDom -> loadHTML($htmlText);
$newElement = $newDom -> documentElement;
$newBody = $newElement -> getElementsByTagName('body') -> item(0);
foreach($newBody -> childNodes as $newNode) {
  $element -> appendChild($dom -> importNode($newNode, true));
}

Il suffit alors d'ajouter $element à un nœud de $dom.
ça marche, mais c'est une usine à gaz!
Modifié par PapyJP (08 Aug 2018 - 14:58)
N'ayant toujours pas trouvé ladite fonction, qui n'existe peut être que dans mon imagination, j'ai poursuivi su la piste exprimée ci-dessus, mais c'est apparemment une impasse, car les fonctions relatives au HTML dans DOMDocument sont bloquées au HTML4, voire au XHTML. Il y a toujours des choses qui ne marchant pas, par exemple le mieux que je sois parvenu à faire ne savait pas traiter correctement les caractères encodés en utf-8.
Sauf avis de votre part, je vais devoir changer le design de mon application...