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 14/05/2007, 12h07   #1
Nouveau Membre du Club
 
Avatar de lemok
 
Inscription : mai 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 81
Points : 25
Points : 25
Par défaut [DOM] Création d'un filtre html en PHP

Bonjour,

Mon probleme est le suivant:

Je recupere dans une variable $htlm un flux html et je souhaiterai effectuer quelques modification à ce code HTML avant de l'envoyer au client par "echo".

je suis debutant en PHP et je souhaiterais savoir s'il existe des fonctions PHP deja develeppées qui font ça.

merci.
lemok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 12h20   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Il faudrait que tu précises d'abord le genre de modifications que tu veux effectuer sur ce "flux" html.
Changer des valeurs, changer des balises, passer en majuscules, gérer les accents, etc?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 14h01   #3
Nouveau Membre du Club
 
Avatar de lemok
 
Inscription : mai 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 81
Points : 25
Points : 25
Citation:
Envoyé par koopajah
Il faudrait que tu précises d'abord le genre de modifications que tu veux effectuer sur ce "flux" html.
Changer des valeurs, changer des balises, passer en majuscules, gérer les accents, etc?
Je voudrais parcourir le flux HTML et voir s' il y a un formulaire ayant une class="class1" et retourner uniquement son contenu
lemok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 14h09   #4
Membre régulier
 
Inscription : janvier 2007
Messages : 186
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2007
Messages : 186
Points : 90
Points : 90
Salut
Regardes du coté des fonctions ereg() ou preg_match().
Elles te permetront de rechercher et de sélectionner des 'motifs' dans une chaine de caractères.
tom42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 14h26   #5
Nouveau Membre du Club
 
Avatar de lemok
 
Inscription : mai 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 81
Points : 25
Points : 25
Citation:
Envoyé par tom42
Salut
Regardes du coté des fonctions ereg() ou preg_match().
Elles te permetront de rechercher et de sélectionner des 'motifs' dans une chaine de caractères.
Ce flux je l'ai recupéré en utilisant la bibliothèque curl, donc par l'instruction curl_exec().
Je pense qu'il vaux mieux traiter ce flux pas comme une String mais plutot comme du DOM pour eviter des erreurs.

par exemple dans le cas où:
<form class="class1">
<form >
</form>
</form>
Je risque de recuperer: "<form class="class1"><form ></form>"
y a pas moyen de transformer ce flux en un objet DOM? ou peut etre recuperer ces donnes par un autre moyen que curl ?!
lemok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 14h59   #6
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
cURL n'est qu'un moyen parmi d'autres pour récupérer le corps d'une page distante. Certaines fonctions sont capables, au lieu d'utiliser un fichier, d'utiliser une URL mais cela dépend en partie du paramètre allow_url_fopen et des flux que PHP est capable de gérer en interne (http, https, ftp, ftps, zip, ...).

On peut procéder ainsi :
Code :
1
2
3
4
5
6
7
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$ret = curl_exec($ch);
curl_close($ch);
 
$dom = DomDocument::loadXML($ret);
# ...
Ou alors plus simplement :
Code :
1
2
$dom = DomDocument::load($url);
# ...
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 15h09   #7
Nouveau Membre du Club
 
Avatar de lemok
 
Inscription : mai 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 81
Points : 25
Points : 25
Citation:
Envoyé par julp
cURL n'est qu'un moyen parmi d'autres pour récupérer le corps d'une page distante. Certaines fonctions sont capables, au lieu d'utiliser un fichier, d'utiliser une URL mais cela dépend en partie du paramètre allow_url_fopen et des flux que PHP est capable de gérer en interne (http, https, ftp, ftps, zip, ...).

On peut procéder ainsi :
Code :
1
2
3
4
5
6
7
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$ret = curl_exec($ch);
curl_close($ch);
 
$dom = DomDocument::loadXML($ret);
# ...
Ou alors plus simplement :
Code :
1
2
$dom = DomDocument::load($url);
# ...
je viens d'essayer votre proposition avec une fleche:
Code :
$dom = DomDocument->load($url);
mais j'ai un message d'erreur comme quoi le flux n'est pas du XML.
là j'explore la classe DOMDocument:
$domdoc = new DOMDocument($dataService);
le probleme est que qand j'envois un resultat il s'affiche pas en html mais en string càd : "Object"
lemok est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 16h14   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Avec la méthode loadHTMLFile ?
Code :
$dom = DomDocument::loadHTMLFile($url);
Il y a également sa consoeur loadHTML() si l'arbre se présente sous la forme d'une chaîne.

(je vous avais donné, à titre d'exemple, pour un fichier XML pur mais j'en ai oublié de le mentionner )
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 16h50   #9
Nouveau Membre du Club
 
Avatar de lemok
 
Inscription : mai 2007
Messages : 81
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 81
Points : 25
Points : 25
Citation:
Envoyé par julp
Avec la méthode loadHTMLFile ?
Code :
$dom = DomDocument::loadHTMLFile($url);
Il y a également sa consoeur loadHTML() si l'arbre se présente sous la forme d'une chaîne.

(je vous avais donné, à titre d'exemple, pour un fichier XML pur mais j'en ai oublié de le mentionner )
J'arrive à recuperer la partie du code qui m'interesse. mais qand je la retourne par echo ça m'affiche "Object" mais pas le formulaire que je voulais
lemok est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h40.


 
 
 
 
Partenaires

Hébergement Web