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 :

[Mail] Rechercher et remplacer des images dans un code html


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 188
    Points : 121
    Points
    121
    Par défaut [Mail] Rechercher et remplacer des images dans un code html
    Bonjour,
    Je cherche à pouvoir récupérer toutes les images contenu dans un code html.
    Je m'explique, j'ai une chaine de caractère qui comprend du code html par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $machaine="<b>toto</b><img src='img_src1'>titi<img src='img_src2'>";
    je voudrai récupérer img_scr1, img_src2 et pouvoir après remplacer img_src1 pour une valeur et img_src2 par une autre valeur pour avoir à la fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $machaine="<b>toto</b><img src='new_img_src1'>titi<img src='new_img_src2'>";
    j'espère avoir été clair.

    Avez vous une solution ?
    Merci

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Si j'ai bien saisi ta question, il suffit de mettre des variables à la place des noms de fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $machaine='<b>toto</b><img src="'.$img_src1.'" alt=""/>titi<img src="'.$img_src2.'" alt=""/>';
    où $img_src1 et $img_src2 sont des variables de type string contenant le nom de l'image correspondante. Ensuite, pour modifier les noms de fichiers, il suffit d'ajouter le préfixe "new_" aux variables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $img_src1='new_'.$img_src1;
    $img_src2='new_'.$img_src2;
    $machaine='<b>toto</b><img src="'.$img_src1.'" alt=""/>titi<img src="'.$img_src2.'" alt=""/>';
    A propos, on utilise plutôt le simple quote (apostrophe) pour encadrer une chaîne et les guillemets pour encadrer les valeurs des propriétés HTML. Cet article explique pourquoi c'est important. A noter au passage que les balises IMG doivent se cloturer elles-mêmes (<img.../>) et contenir les propriétés SRC et ALT, même si celles-ci sont vides.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 188
    Points : 121
    Points
    121
    Par défaut
    oui je sais mais c'était un exemple en fait le code html récupéré à été saisi par un utilisateur, il peux m'envoyer n'importe quel code après je dois avoir un script qui parcours le code html et récupère les scr des images pour les remplacer par un autre code.
    En fait je développe un module de newsletter et c'est pour pouvoir incorporer les images dans le mail et quelles soient disponible même si le site internet ne répond pas.

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Ok, dans ce cas, il s'agit d'un code "CID" pour les images et elles doivent-être ajoutées dans le corps du mail (codées en base64), un peu comme pour les pièces jointes. Je l'ai déjà fait dans un projet... Il faut donc rechercher les balises <IMG/> dans le code HTML et récupérer le chemin des images. Si ces images ne sont pas sur ton serveur, il faudra obligatoirement les télécharger (upload http, limité à 2Mo en général). Une fois ces images sur ton serveur, tu pourras les intégrer dans le mail, autrement ça ne fonctionnera pas. Tu peux aussi envisager d'utiliser la librairie PHPMAILER pour le faire, il suffira d'ajouter les images comme des pièces jointes avec la méthode AddEmbeddedImage et les nommer avec un CID unique, sans oublier de remplacer le nom de la source des balises <IMG/> par ce même CID.

    Si tu utilises PHPMAILER, aide-toi de ce sujet.

    J'avais déjà donné une réponse similaire dans ce sujet, tu trouveras d'autres explications complèmentaires. Donc commence par bien lire en entier les 2 liens que je viens de te donner avant de demander de l'aide.

    PS: N'oublis pas de faire une recherche dans le forum avant de poser une question car bien souvent, on trouve toujours des informations pour résoudre notre problème.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 188
    Points : 121
    Points
    121
    Par défaut
    merci cela je le savais déjà mais mon problème c'est justement de récupérer mes img src et de les remplacer une à une

  6. #6
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    d'après le titre je comprends :

    1. une lecture du code HTML
    2. recherche des src des images (donc des balises IMG)
    3. et pour finir remplace les src


    donc pour le 1. c'est ok ?

    pour la recherche des images, je suppose qu'il te manque une expression rationnelle avec une fonction comme preg_match.

    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
     
    $fd = @fopen($url_a_lire,"r");
     
       if ($fd)
       {
          // chaque ligne du code html
          while (!feof($fd))
          {
             // une ligne du code HTML récupéré
             $line = rtrim(fgets($fd, 1024));
     
             // Récupère l'url des balises img
             // le masque de recherche utilisé
            $pattern = '`<img[^>]* src=\"?([^\"]*\.(gif|GIF|jpg|JPG))\"?[^>]*>`';
     
            if(preg_match($pattern, $line, $matches))
            {
               // si une image est trouvée effectuer un traitement
               // et bien sûr dans le tableau $matches  se trouve les résultats de la        recherche  
            }
      }
    j'ai utilisé ce masque à ma convenance mais selon les traitements à effectuer il faudra peut être le modifier un peu.

    c'est bien ça que tu recherches ?

  7. #7
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Juste pour info, il n'y a pas que la balise <IMG> qui peut contenir une image, il faut aussi tenir compte des images en background ou contenues dans le style CSS ou le code Javascript... La balise <OBJECT> peut également servir à afficher une image.

    Il faut aussi se méfier d'une chose : La source d'une balise <IMG> n'est pas forcément une image, mais peut être, par exemple, un script PHP générant une image... Pour cela, je te conseille de tester le type mime du fichier pour s'assurer qu'il s'agit bien d'une image (tester l'extension ne suffira pas).

    Sinon, pour répondre à ta question, elle a déjà été posée en fait :
    http://www.developpez.net/forums/sho...d.php?t=265590

Discussions similaires

  1. Rechercher et remplacer des caractères dans un fichier
    Par klimon dans le forum Général Python
    Réponses: 6
    Dernier message: 04/08/2014, 15h56
  2. Intégrer des images dans un document HTML
    Par taleb51 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/11/2013, 13h32
  3. Comment insérer des images dans une ComboBox HTML ?
    Par UiYuki dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 29/08/2010, 15h35
  4. [WD-2003] Comment remplacer des images dans des entêtes non reliées
    Par Francine222 dans le forum VBA Word
    Réponses: 4
    Dernier message: 27/08/2010, 15h16
  5. Réponses: 4
    Dernier message: 08/05/2008, 16h07

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