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 :

Recupérer images d'un html


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Recupérer images d'un html
    Bonjour à toutes & tous,

    Cela fait un moment que je me casse la tête avec une regex me permettant de récupérer les images venant d'une chaine html

    Ma regex actuelle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $image_regex = '/<img[^>]*src=[\"|\'](.*)[\"|\']/Ui';	
    preg_match_all($image_regex, $string, $out, PREG_PATTERN_ORDER);
    Elle me permet de récupérer les images de type :
    Par contre, certains images sont codées de cette manière :
    Il n'y à pas d'apostrophes ou de quotes ...

    A ce moment là, ma regex ne marche plus

    Auriez vous une solution pour ca ?

    Merci d'avance

  2. #2
    Membre averti

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Points : 409
    Points
    409
    Billets dans le blog
    1
    Par défaut
    Tu trouveras très difficilement une regexp qui n'oublie aucun cas...Je te conseille de parser ton HTML en utilisant la bibliothèque DOM plutôt :
    http://php.net/manual/fr/book.dom.php
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 383
    Points : 10 411
    Points
    10 411
    Par défaut
    Oui surtout que dans ton cas c'est assez simple avec domDocument par exemple pour récupérer les attributs "src" des balises images de cette page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    $page_cible = 'http://www.developpez.net/forums/d1312526/php/langage/regex/recuperer-images-html/';
     
    $tab = array();
     
    $dom = new DOMDocument;
     
    if(@$dom->loadHTMLFile($page_cible))
    	{
    		$domliste = $dom->getElementsByTagName('img');
     
    		foreach($domliste as $img) 
    		{
    			//$img->getAttribute('src') contenu du src
    			$attribut_src = $img->hasAttributes() ? $img->getAttribute('src') : null;
     
    			if (isset($attribut_src)) $tab[] = $attribut_src;
    		}
    	}
    	else
    	{
    		echo 'le document '.$page_cible. ' n\'a pas pu être chargé';
    	}
     
    echo '<pre>';
    print_r($tab);
    echo '</pre>';
    ?>

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Bonjour,
    Je te conseille de parser ton HTML en utilisant la bibliothèque DOM
    Je suis d'accord, c'est la voie à privilégier, mais bon, pour le sport:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $string=<<<LOD
    <img src="ours.jpg"/>
    <img src="violon-d'Ingres.jpg"/>
    <img src=lapin.bmp />
    <img src="" /><img src=/><img src= /><img src=>
    <img src=chat.gif/>
    <img src="un pangolin.jpg" />
    <img src='vache.png' />
    <img src='une-"citation".jpg' >
    LOD;
     $pattern = '/<img\s[^>]*?\ssrc\s*=\s*(["|\'])?(?!(?1))((?(1)[^\/]*|[^\s\/]*))(?:(?1)|\b)/i';  
    preg_match_all($pattern, $string, $matches, PREG_PATTERN_ORDER);
    $result = array_pop($matches);
    echo "<pre>";
    print_r($result);
    echo "</pre>";
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. Chargements d'images et page html générés PHP
    Par gloubi dans le forum Flash
    Réponses: 7
    Dernier message: 31/03/2007, 00h36
  2. image de fond css / image dans code html
    Par rastali dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 20/02/2007, 08h54
  3. [Word] Récupérer le contenu d'un doc Word (text/image) -> sauvegarder en HTML
    Par budylove dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/05/2006, 15h51
  4. [HTML] image intégrée à l'html
    Par fidji dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 21/04/2006, 10h56
  5. comment ajouter une image dans mon HTML??
    Par Mickey.jet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/03/2006, 15h12

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