Parser du HTML avec PHP

Eléphant du PHP | 92 Messages

27 sept. 2010, 10:00

Ce que je passe en paramètre à la fonction ? Du contenu HTML (du genre <p>Un bel été.</p>) récupéré depuis une BdD.

La BdD est en UTF-8, ses champs aussi, je m'y connecte en précisant le charset, j'ai rajouté le header donné plus haut dans mon code et mes fichiers sont en UTF-8. Théoriquement, j'ai de l'unicode de bout en bout.

ViPHP
ViPHP | 5462 Messages

27 sept. 2010, 10:35

Du contenu HTML

c'est avec la balise meta pour l'encodage :wink:

Eléphant du PHP | 92 Messages

27 sept. 2010, 10:43

Euh, oui d'accord mais je ne passe pas un fichier HTML avec entête, etc. Je passe juste du texte formaté en HTML (comme l'exemple que j'ai donné).

$content c'est pas <html><body><p>Un bel été.</p></body></html>, c'est juste <p>Un bel été.</p>

Je travaille sur un petit CMS perso et je stocke en BdD le contenu de mes articles, formaté en HTML (via un champ textarea qui utilise TinyMCE). C'est vraiment du texte formaté, pas un contenu HTML complet et valide...

ViPHP
ViPHP | 5462 Messages

27 sept. 2010, 10:49

au lieu de faire <?xml encoding="UTF-8"> faut mettre la balise meta

Eléphant du PHP | 92 Messages

27 sept. 2010, 10:54

au lieu de faire <?xml encoding="UTF-8"> faut mettre la balise meta
Ah ? Je suivais le conseil d'AB qui parlait d'un hack au début du sujet.

Je mets quoi comme balise meta ? <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> ou <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/> (ou les deux) ?
Si je balances la balise à la place du bout de XML, il va bien l'utiliser pour construire le DOM ? Il ne pas pas faire un truc du genre <html><body><meta [...]><p>bla bla</p></body></html> ?
Modifié en dernier par abelthorne le 27 sept. 2010, 10:57, modifié 2 fois.

ViPHP
ViPHP | 5462 Messages

27 sept. 2010, 10:56

juste
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>

Eléphant du PHP | 92 Messages

27 sept. 2010, 10:58

Ben ça casse tout...

Au passage, il n'y a pas moyen d'afficher facilement le DOM quand on crée un nouvel élément DomDocument ? Un peu à la manière d'un print_r, qui afficherait toute l'arborescence avec le contenu de chaque nœud ?

ViPHP
ViPHP | 5462 Messages

27 sept. 2010, 11:04

Ben ça casse tout...

Au passage, il n'y a pas moyen d'afficher facilement le DOM quand on crée un nouvel élément DomDocument ? Un peu à la manière d'un print_r, qui afficherait toute l'arborescence avec le contenu de chaque nœud ?
sinon tu fais un utf8_decode, pour le print_r c'est avec dom_import_simplexml

Eléphant du PHP | 92 Messages

27 sept. 2010, 11:20

sinon tu fais un utf8_decode
J'y ai pensé mais j'aimerais autant ne pas toucher à mon contenu et chercher à comprendre d'où vient le problème exactement. ;)
pour le print_r c'est avec dom_import_simplexml
Tu aurais un exemple ? parce que je ne vois pas bien comment l'utiliser pour afficher mon DOM...
Si je pose la question, ce serait surtout pour pouvoir afficher l'arbre DOM complet une fois mon loadHTML effectué, pour voir d'où viennent les domText parasites, ce genre de chose... Donc pas de conversion intermédiaire qui nettoierait le DOM.

Je me disais qu'il y avait peut-être des méthodes __tostring sur les différentes classes qui auraient permis de faire un echo $mon_dom et avoir une arborescence détaillée, mais ce n'est pas le cas. Donc je cherche un équivalent à ça.

ViPHP
ViPHP | 5462 Messages

27 sept. 2010, 11:29

je me suis tromper c'est simplexml_import_dom