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 :

Recuperer le lien image dans une balise img src [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut Recuperer le lien image dans une balise img src
    Bonjour !

    Voila, nous cherchons à récupérer les liens des images des balises img src.

    Exemple
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="http://www.google.fr/image/ban.jpg" />

    Ceci est un exemple donc. Donc grâce aux Regex on arrive bien à récupérer ce type d'adresse. Cependant, il existe différente manière d'appeler une image. Par exemple "../test.jpg" voir "/test.jpg".

    Voila donc notre fonction qui fonctionne pour les liens normaux :

    Code php : 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
    preg_match_all("#<img(.*?)(src.*?)>#is",$fichier,$mat,PREG_PATTERN_ORDER);
     
    foreach ($mat[2] as $im) 
    {
    		//on récupère que le lien
    		preg_match('#src=\"(.*?)\"#i',$im,$tr);
     
    		echo $tr[0].'<br>';
     
    		$tr[0] = eregi_replace('src=',"",$tr[0]);
    		$tr[0] = eregi_replace('"',"",$tr[0]);
    		//pour les liens relatifs
    		if (substr($tr[0],1) =="."){
     
    		$tr[0]=realpath($tr[0]);
    		}
     
     
     
    		echo $tr[0];
    }

    Cependant avec les liens relatif le résultat est nul.

    SI quelqu'un avait une idée où qu'il ai déjà réaliser ce genre d'opération cela pourrait nous aider.

    Merci d'avance.
    ►Ne pas oublier le

  2. #2
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Bonsoir,

    Concrètement l'algo doit être capable de reconstituer l'URL de l'image en cas de chemin relatif, c'est çà ?

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  3. #3
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    En gros juste récupérer "/image.jpg" dans une variable.

    Donc on récupérer bien le lien normal mais pour des chemin relatif surement a cause des "." ou des "/" on arrive pas a récupérer juste ce qui est entre "" après le "src="

    Ensuite il suffira de lui concaténer le lien de base du site... Ceci ne devrait pas être trop dur^^

    J'espère être clair
    ►Ne pas oublier le

  4. #4
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Avec çà ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $texte = 'des trucs <img src="image.jpg" /> des machins';
    $texte = "des trucs <img src='/image.jpg' /> des machins";
    $texte = 'des trucs <img class="class" src="../image.jpg" /> des machins';
    $texte = 'des trucs <img id="id" src="/repertoire/image.jpg" class="class" /> des machins';
     
    $masque = '#<img (?:.*?)src=(?:"|\')(.+)(?:"|\')(?:.*?) />#Uis';
    preg_match_all($masque, $texte, $resultats);
    echo '<pre>',print_r($resultats),'</pre>';

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  5. #5
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    J'essaie ca demain et je vous direz

    Merci en tout cas pour la rapidité de la réponse !
    ►Ne pas oublier le

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Huntress Voir le message
    Avec çà ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $texte = 'des trucs <img src="image.jpg" /> des machins';
    $texte = "des trucs <img src='/image.jpg' /> des machins";
    $texte = 'des trucs <img class="class" src="../image.jpg" /> des machins';
    $texte = 'des trucs <img id="id" src="/repertoire/image.jpg" class="class" /> des machins';
     
    $masque = '#<img (?:.*?)src=(?:"|\')(.+)(?:"|\')(?:.*?) />#Uis';
    preg_match_all($masque, $texte, $resultats);
    echo '<pre>',print_r($resultats),'</pre>';
    Merci de l'aide, chère chasseresse !

    Juste un détail : certaines parenthèses non capturantes sont inutiles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $masque = '#<img .*src=(?:"|\')(.+)(?:"|\').*>#Uis';
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  7. #7
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Ah oui ?

    J'savais pas, j'essaierais pour voir, merki

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

  8. #8
    Membre éprouvé Avatar de obito
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2008
    Messages
    773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2008
    Messages : 773
    Points : 948
    Points
    948
    Par défaut
    Merci des réponses déjà. En fait le code ne marchait pas très bien donc on a cherché une autre alternative, qui marche. Voila notre solution :

    Code php : 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    preg_match_all("#<img(.*?)(src.*?)>#is",$fichier,$mat,PREG_PATTERN_ORDER);
     
    foreach ($mat[2] as $im) 
    {
     
    		//on récupère que le lien
    		// tmp recoit un tableau de chaine comprenant des bout de chaine apres ' '
     
    		$tmp = explode(' ',$im);
     
    		foreach ($tmp as $value){
     
    			if ((ereg('src',$value,$regs)) )
    			{
     
     
    				$img = eregi_replace('src=',"",$value);
     
    				$img = eregi_replace('"',"",$img);
     
     
    					if (substr($img,0,1) =="." ) {
     
    						$img = vraichemin($img,$lien);
     
     
    					}
    					elseif (substr($img,0,1) == "/") {
     
    						$test = $img;
     
    						$img = $lien.$test;
     
    					}
     
    			}
    //enleve un enventuel espace après l'extension ou avant le debut de l'url.
    		$img=trim($img);
    		//on vérifie l'adresse et on la change s'il faut
                   // Appel d'une fonction qui va recréer le vrai lien si necessaire
    		$urlimg = vraichemin($img,$lien);
     
    		}

    Merci en tout cas !!
    ►Ne pas oublier le

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/06/2014, 08h23
  2. Réponses: 1
    Dernier message: 16/02/2014, 14h53
  3. Réponses: 2
    Dernier message: 15/02/2008, 17h47
  4. Définir le target des liens contenus dans une balise Object
    Par Booyakha dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/02/2007, 15h23
  5. Comment ajouter une image dans une balise div ??
    Par liv dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 05/05/2006, 11h48

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