Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/08/2007, 15h55   #1
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
Par défaut [DOM] suppression de plusieurs noeuds

J'ai quelques lignes qui me permettent de trouver une balises dans un fichier html , je veux supprimer toutes les occurences de cette balise, en l'occurence 2 dans mon fichier de test.
La première balise se supprime bien mais jamais la 2ème. Du coup quand je la réécris par la suite, j'en ai à nouveau 2.
Quelqu'un a déjà eu ce problème ?


Code :
1
2
3
4
5
6
7
8
9
 
          $base= $doc->getElementsByTagName('base');
          echo $base->length; // affiche 2 comme prévue
          if( $base->length > 0 ) {
              foreach ($base as $item) {
                $item->parentNode->removeChild($item);
              }
          }
          echo $base->length; //Affiche 1  au lieu de 0 :s
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 16h48   #2
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
$base est un objet, pas un tableau

Code :
1
2
3
for ($i = 0; $i < $base->length; $i++) {
   echo $base->item($i)->parentNode->removeChild($base->item($i));
}
à la place de ton foreach, ça devrait mieux aller
__________________
Dia [ Page DVP ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 17h04   #3
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
La doc précise que l'on peut faire l'itération avec un foreach ^^.
Celà ne change rien avec le for :s
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/08/2007, 17h45   #4
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
a bon

autant pour moi alors

j'regarderai ton problème de plus près demain au boulot
__________________
Dia [ Page DVP ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/08/2007, 10h18   #5
Membre chevronné
 
Avatar de Dia_FR
 
Homme Aurélien
Développeur Web
Inscription : avril 2006
Messages : 510
Détails du profil
Informations personnelles :
Nom : Homme Aurélien
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2006
Messages : 510
Points : 643
Points : 643
test.html affiche
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Titre principal 1
Sous-titre 1.1
Sous-titre 1.2
Sous-titre 1.3
Titre principal 2
Sous-titre 2.1
Sous-titre 2.2
Titre principal 3
Sous-titre 3.1
Sous-titre 3.2
Sous-titre 3.3
Sous-titre 3.4
test.php
Code :
1
2
3
4
5
6
7
8
<?php
$doc = new DOMDocument();
$doc->loadHTMLFile('test.html');
while($elem = $doc->getElementsByTagName("h2")->item(0)) {
   $elem->parentNode->removeChild($elem);
}
$doc->save('new_test.html');
?>
new_test.html affiche
Code :
1
2
3
Titre principal 1
Titre principal 2
Titre principal 3
__________________
Dia [ Page DVP ] [ Blog ] [ Site pro ]
Dia_FR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2007, 11h02   #6
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
Merci du coup de main ça roule
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h38.


 
 
 
 
Partenaires

Hébergement Web