5 votes

comment conserver les balises <br/> lors de l'utilisation de Dom en php pour analyser le document html ?

J'utilise dom en php pour récupérer le contenu d'un div par $node->nodeValue . Cette division a de nombreux <br/> dans son contenu, mais après l'avoir stocké dans la base de données et l'avoir affiché dans le navigateur, tous les balises <br/> sont transformées en espaces blancs. Je veux conserver les <br/> tags, comment puis-je y parvenir ?

9voto

Dr.Molle Points 61743

NodeValue renvoie uniquement les données textuelles (si elles sont utilisées pour les nœuds d'éléments). Récupérez le contenu en utilisant saveXML()

$node->ownerDocument->saveXML($node);

2voto

Phil Points 48960

DOMNode::nodeValue ne renverra que le contenu du texte.

Comme <br /> est un élément enfant, il ne sera pas renvoyé.

Votre meilleure chance est de

  1. Créer une chaîne vide et temporaire
  2. Bouclez sur tous les noeuds enfants dans votre $node
  3. Obtenez le balisage de chaque nœud enfant en utilisant DOMDocument::saveHTML()
  4. Concaténer cette chaîne avec votre chaîne temporaire
  5. Sauvegarder la chaîne temporaire dans la base de données

Quelque chose comme ça - http://www.php.net/manual/en/book.dom.php#89718

-1voto

ubiquibacon Points 3212

En supposant que vous utilisez MySQL (puisque vous ne le dites pas), assurez-vous d'utiliser la fonction mysql_real_escape_string . La réponse du Dr Molle pourrait vous éclairer davantage.

http://php.net/manual/en/function.mysql-real-escape-string.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X