IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comment lire le code source(html) d'une page et le stocké dans une string


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    à consulter avant de poster ... la FAQ de C#

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    regarde ici

  3. #3
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut
    Merci je regarde cela et je fait un retour
    à consulter avant de poster ... la FAQ de C#

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Points : 99
    Points
    99
    Par défaut
    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.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    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 ?

  6. #6
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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='';

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Points : 99
    Points
    99
    Par défaut
    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.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    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 ?

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Points : 99
    Points
    99
    Par défaut
    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.

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    il veux pas récupérer Hello Word il veux écrire Hello Word par rapport a un fichier de template

    template.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html>
    <title>...</title>
    <head>...</head>
    <body></body>
    </html>
    ensuite la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>
    */

  11. #11
    Membre régulier
    Avatar de unix27
    Inscrit en
    Septembre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2003
    Messages : 338
    Points : 106
    Points
    106
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <html>
    <title>...</title>
    <head>...</head>
    <body></body>
    </html>
    ensuite la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    $homepage = file_get_contents('http://www.test.html');
    echo $homepage;
    ?>
    n'affiche pas le code html
    à consulter avant de poster ... la FAQ de C#

  12. #12
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>
    Je suis fervent 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 de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur 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…

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/04/2008, 13h30
  2. Comment afficher dans une page web le contenu d'une autre
    Par katie dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 28/10/2007, 09h58
  3. Insérer une feuille Excel avec macro dans une page HTML
    Par Pakkaï dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/12/2006, 17h40
  4. Réponses: 1
    Dernier message: 04/04/2006, 11h29
  5. [HTML] Incorporer un fichier .xls et .ppt dans une page html
    Par DaddyP dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 25/01/2006, 16h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo