Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 30/12/2010, 12h12   #1
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
Par défaut Comment lire le code source(html) d'une page et le stocké dans une string

Bonjour, je souhaite créer une fonction qui prend comme paramétre l'url d'une page html(toto.htm) et qui stock le code source <html>...</html> dans une string
Par exemple j'ai la page html(toto.htm) suivante:
Code :
1
2
3
4
5
6
<html>
<title>...</title>
<head>...</head>
<body>hello wold</body>
</html>
Le résultat voulu comme output est la chaine hello wold
j'ai besoin dans un premier temps de stoker tout le code html dans une string ensuite utilisé une fonction qui afficher le texte d'élimiter par <body></body>
Merci
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 12h24   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
Bonjour,

regarde ici
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 12h26   #3
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
Merci je regarde cela et je fait un retour
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2011, 23h09   #4
Membre régulier
 
Inscription : juillet 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 35
Points : 76
Points : 76
Pour lire la source de la page : curl.

Pour ne conserver que le body : n'importe quel outil qui sait traiter du xml (par exemple : SimpleXml) ou une expression régulière.
jonoz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 00h49   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par jonoz Voir le message
Pour lire la source de la page : curl.

Pour ne conserver que le body : n'importe quel outil qui sait traiter du xml (par exemple : SimpleXml) ou une expression régulière.
pourquoi curl ?
pourquoi SimpleXML alors que c'est du HTML ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 02h11   #6
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,
Code :
1
2
3
4
5
$html=file_get_contents('http://www.example.com/');
if(preg_match('%.*?<html[^>]*>.*?<head>.*?<title>.*?</title>.*?</head>.*?<body[^>]*>(.*?)</body>.*?</html>%si',$html,$m))
	$body=$m[1];
 else
	$body='';
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 09h06   #7
Membre régulier
 
Inscription : juillet 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 35
Points : 76
Points : 76
Citation:
Envoyé par stealth35 Voir le message
pourquoi curl ?
pourquoi SimpleXML alors que c'est du HTML ?
Pourquoi Curl ? Parce qu'en en moyenne 40% plus rapide, je vous invite à faire le test. De plus, curl offre des fonctionnalités supplémentaires intéressantes (ex: peut passer par un proxy).

XHTML étant du xml, la façon correcte de le traiter est d'utiliser un outil qui permet de manipuler le DOM. S'il s'agit de html 4, effectivement cette méthode est plus délicate mais tout dépend de la structure du document.

Maintenant, l'expression régulière donnée par Eric2a revient au même si l'on veut juste récupérer le contenu comme chaîne de texte (c'est même un peu plus simple) sans faire de traitement lié à la hiérarchie du document.

Ayant eu à travailler sur des problématiques d'extraction d'éléments dom à partir de pages distantes, j'avais utilisé curl + SimpleXML, ça faisait très bien l'affaire.
jonoz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 10h26   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par jonoz Voir le message
Pourquoi Curl ? Parce qu'en en moyenne 40% plus rapide, je vous invite à faire le test. De plus, curl offre des fonctionnalités supplémentaires intéressantes (ex: peut passer par un proxy).
le gain est minime par rapport a un wrapper classique, seul le temps de réponse du serveur distant est importante, et ceux qui non pas curl ?
pour le proxy tu peux aussi le faire avec le wrapper classique,
http://www.php.net/manual/en/context.http.php

Citation:
Envoyé par jonoz Voir le message
XHTML étant du xml, la façon correcte de le traiter est d'utiliser un outil qui permet de manipuler le DOM. S'il s'agit de html 4, effectivement cette méthode est plus délicate mais tout dépend de la structure du document.
attention HTML et XML c'est 2 choses différentes, le DOM étant leur parent, avec SimpleXML tu peux lire du XML et du XHTML, avec DOMDocument::loadHTML(File) du XHTML et du HTML

C'est toujours plus simple d'utiliser les outils adaptés

Lui en plus veux un système de template non ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 10h59   #9
Membre régulier
 
Inscription : juillet 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 35
Points : 76
Points : 76
Citation:
Envoyé par stealth35 Voir le message
le gain est minime par rapport a un wrapper classique, seul le temps de réponse du serveur distant est importante, et ceux qui non pas curl ?
pour le proxy tu peux aussi le faire avec le wrapper classique,
http://www.php.net/manual/en/context.http.php
Il me semble que celà fonctionne effectivement si le proxy ne requiert pas d'authentification.

Pour les perfs, 40% c'est non-négligeable quand le volume est conséquent.

Citation:
Envoyé par stealth35 Voir le message
attention HTML et XML c'est 2 choses différentes, le DOM étant leur parent, avec SimpleXML tu peux lire du XML et du XHTML, avec DOMDocument::loadHTML(File) du XHTML et du HTML

C'est toujours plus simple d'utiliser les outils adaptés

Lui en plus veux un système de template non ?
Tout à fait!

Pour le système de template, je ne vois pas vraiment ce que vous voulez dire.
jonoz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 11h06   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
il veux pas récupérer Hello Word il veux écrire Hello Word par rapport a un fichier de template

template.html :
Code :
1
2
3
4
5
<html>
<title>...</title>
<head>...</head>
<body></body>
</html>
ensuite la fonction

Code :
1
2
3
4
5
6
7
8
9
echo lafonction('Hello Word', 'template.html');
 
/*
<html>
<title>...</title>
<head>...</head>
<body>Hello Word</body>
</html>
*/
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 02h23   #11
Membre du Club
 
Avatar de unix27
 
Inscription : septembre 2003
Messages : 281
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : septembre 2003
Messages : 281
Points : 62
Points : 62
Citation:
Envoyé par stealth35 Voir le message
il veux pas récupérer Hello Word il veux écrire Hello Word par rapport a un fichier de template

template.html :
Code :
1
2
3
4
5
<html>
<title>...</title>
<head>...</head>
<body></body>
</html>
ensuite la fonction

Code :
1
2
3
4
5
6
7
8
9
echo lafonction('Hello Word', 'template.html');
 
/*
<html>
<title>...</title>
<head>...</head>
<body>Hello Word</body>
</html>
*/
en fait je souhaite récupéré hello wold
en +
Code :
1
2
3
4
<?php
$homepage = file_get_contents('http://www.test.html');
echo $homepage;
?>
n'affiche pas le code html
__________________
unix27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2011, 11h55   #12
Membre chevronné
 
Homme
Développeur Web
Inscription : mars 2011
Messages : 399
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web
Secteur : Finance

Informations forums :
Inscription : mars 2011
Messages : 399
Points : 662
Points : 662
1- Comme il est dit : "CURL, c'est bien quand y a du volume" mais sinon...
2- simpleXML, c'est bien pour le XML et XHTML (seulement s'il est bien codé, sinon, c'est la m****. Et perso, je ne fais pas confiance au HTML des autres )
3-
Code :
1
2
3
4
<?php
$homepage = file_get_contents('http://www.test.html');
echo $homepage;
?>
Normal, là ton serveur envoi le code HTML et sera interprété comme tel par le navigateur (et donc parsé et affiché)...

Si tu veux afficher le code source directement, soit tu modifies le header, soit tu entoures ce que tu "echo" avec <pre>, <code> ou <xmp>
__________________
Membre de StackOverflow, je suis un fervant utilisateur de PHP et de jQuery.
Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web mais aussi plusieurs projets personnels.
Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, un raccourcisseur d'url, un bookmarklet pour envoyer l'url de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc...
Shikiryu 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 15h35.


 
 
 
 
Partenaires

Hébergement Web