Pb avec ereg pour parser image

Fermé
ebliss Messages postés 6 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 7 août 2008 - 7 août 2008 à 11:48
 Max - 22 oct. 2010 à 16:31
Bonjour,
Je souhaiterais faire une ereg me permettant de scruter au sein d'une page html l'ensemble des images contenues afin de recuperer pour chacunes d'entres elle le src
en resumé :
- scrter tous les <img src="" />
- en extraire le lien du src
- utiliser le src de chaque img pour une autre utilisation (par exemple appliquer un scriptalicous)

Sachant qu'il peut y avoir plusieurs image par page (> 9)

j'ai fait cela mais cela ne me convient pas
$match = preg_match_all('/<img.*src=(.*)\s\/>/',$Texte,$matches);
echo $matches[1];

car je doit mettre un identifiant ne pouvant depasser 9 :(

Vous aurez certyainement compris le but , c'est de simplement mettre mon <img ... /> et qu'a l'affichage ma page fait le traitement pour appliqué un scriptalicous de zoom par exemple ou un javascript popup
A voir également:

9 réponses

gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
7 août 2008 à 12:14
Salut,

d'abord c'est bizarre, tu appelle ta variable $match et tu écris $matches[] ...
Sois je comprend pas trop le principe ou soit tu t'es gouré! ^^

Ensuite, ton explication ne veut rien dire ! Surtout cette ligne :

- utiliser le src de chaque img pour une autre utilisation (par exemple appliquer un scriptalicous)

Je te rappelle que scriptaculous agit sur un id et non sur un src.

Et finallement, tu pourrai pas faire un tableau simple pour stocker tes valeurs, un truc du genre:

<?php
$compteur = 0;

while(preg_match_all('/<img.*src=(.*)\s\/>/',$Texte,$matches))
{
$match[$compteur] = preg_match_all('/<img.*src=(.*)\s\/>/',$Texte,$matches);
echo $match[$compteur];
$compteur++;
}

Je suis pas sûr du while(preg_match_all('/<img.*src=(.*)\s\/>/',$Texte,$matches)) mais c'est un truc du genre : "TANT QU'ON A PAS FINI DE SCRUPTER LE FICHIER HTML (EOF ???), ON FAIT LE CODE SUIVANT ...."
A+

Gaerebut
0
ebliss Messages postés 6 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 7 août 2008
7 août 2008 à 14:56
Re
Je me suis peut etre mal exprimé, mais en gros j'ai besoin de recuperer le src de chaque fichier pour l'interpréter autrement dans le html affiché

pour le matches c'est une erruer de copier/coller

je test ton script :)
merci
0
ebliss Messages postés 6 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 7 août 2008
7 août 2008 à 15:40
Gros bug
ca m'ecrit plein de 1111111111

while(preg_match_all('/<img.*src=(.*)\s\/>/',$Texte,$matches))
{
$match[$compteur] = preg_match_all('/<img.*src=(.*)\s\/>/',$Texte,$matches);
echo $match[$compteur];
$compteur++;
}
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
7 août 2008 à 15:50
OUI je t'es dis que c'est ici que ça posé certainement problème :

while(preg_match_all('/<img.*src=(.*)\s\/>/',$Texte,$matches))

mais qu'il fallait trouver un truc qui veuille dire un truc de ce genre : "TANT QU'ON A PAS FINI DE SCRUPTER LE FICHIER HTML (EOF ???), ON FAIT LE CODE SUIVANT ...."

Et as-tu bien initialisé la variable aussi au début ?
==> $compteur = 0;

A+

Gaerebut
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ebliss Messages postés 6 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 7 août 2008
7 août 2008 à 15:54
pour le compteur = 0, oui oui j'ai fait
pour le while, ok j'ai pigé

Merci
0
gaerebut Messages postés 1017 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 22 novembre 2013 171
7 août 2008 à 16:00
Ok !

Tient moi au courant si tu trouve ce qu'il faut mettre dans le while! Et surtout , si tu y arrive et si ça marche ^^

A+

Bon courage !

Gaerebut
0
ebliss Messages postés 6 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 7 août 2008
7 août 2008 à 16:28
Re
J'ai du nouveau

J'ai fait cela

$Texte = '<p>Briquet</p>
<p><img width="400" height="300" alt="" src="/image/1494096336_small.jpg" /></p>
<p>texte</p>
<p><img width="600" height="450" alt="" src="/image/4L%20trophy%20343.jpg" /></p>';

preg_match_all('/<img.*src="(.*)"\s\/>/',$Texte,$match);

$nb=count($match[0]);
for($i=0;$i<$nb;$i++)
{
echo '<a href="'.$match[1][$i].'" class="a_img" rel="lightbox[img_'.$i.']"><img src="'.$match[1][$i].'" border=0 width="200"></a>';
}

et cela me traite correctement les images, or un autre probleme intervient :(
il ne me fait apparaitre que les occurences qui respect le format de l'ereg, et me supprime le reste :(:(:(

or j'ai besoin qu'il conserve la mise en page de mon html, en ne remplacant que les img par le nouveau format

en gros qu'il remplace
<img src="image.jpg" />
en
<a href="image.jpg'" class="a_img" rel="lightbox[img_X]"><img src="image.jpg" border="0"></a>

avec si possible les attribut width et height, c'est plus clair ??
0
ebliss Messages postés 6 Date d'inscription jeudi 7 août 2008 Statut Membre Dernière intervention 7 août 2008
7 août 2008 à 16:48
Fixé :)

$chaine=preg_replace('`<img.*src="(.*)"\s\/>`', '<a href="$1" class="a_img" rel="lightbox[img]"><img src="$1" border=0 width="200"></a>', $Texte);
echo $chaine;


Merci pour tes lumieres Gaerebut
0
Bonjour, moi j'aurais le meme souci mais j'aimerais prendre l'image contenu dans un lien ( <a><img src"...." /></a>) et remplacer cela par un autre couple lien+image

Comment pourrais -je faire ??

Merci
0