Page 1 sur 1

Comment boucler sur un preg_match ?

Posté : 12 nov. 2011, 19:48
par marih
Bonsoir,

suite de la question ci-dessous sur preg_match

Je désire télécharger un fichier html et les images contenues à l'intérieur .
J'utilise upload pour le ficher puis je travaille sur ce fichier ($string) pour trouver les noms des images contenues dans des <img src="nom.jpg"....>
Pour cela j'utilise :
<?php
$string = file_get_contents($path);
preg_match('#<img(.*)src="(.*)" w#is',$string,$matches);  
$nomimage = $matches[2];
echo( "nomimage = $matches[2]");
?>
j'obtiens le premier nom de l'image sous la forme: nomimage.jpg (par exemple) c'est bon.
Comment puis-je obtenir toutes les images contenues dans le fichier ?
Je n'y arrive pas...!
Merci d'avance

Re: Comment boucler sur un preg_match ?

Posté : 13 nov. 2011, 17:38
par moogli
salut,

un petit tour dans la doc t'aurais indiqué preg_match_all() ;)


@+

Re: Comment boucler sur un preg_match ?

Posté : 13 nov. 2011, 20:36
par marih
Bien sûr que j'ai regardé mais çà ne marche pas !
J'ai pas réussi à récupérer les différents noms d'images contenues dans le fichier.
Désolé !

Re: Comment boucler sur un preg_match ?

Posté : 13 nov. 2011, 20:53
par stealth35
de tout façon pour parser de l'HTML c'est avec DOMDocument

Re: Comment boucler sur un preg_match ?

Posté : 13 nov. 2011, 21:09
par marih
Bonsoir à tous,
c'est super sympa de répondre mais plus laconique tu meurs !
Merci quand même !

Re: Comment boucler sur un preg_match ?

Posté : 13 nov. 2011, 21:48
par stealth35
je suppose que t'es allé voir la doc pour essayé de comprendre tout ça ?

Re: Comment boucler sur un preg_match ?

Posté : 14 nov. 2011, 10:48
par marih
Bonjour,
oui bien sûr j'y suis allé mais je suis perdu dans cette fonction qui pour moi est complexe.
Comme je l'ai précisé en détail (merci de regarder le code utilisé) dans la question "pattern pour pre_matchs" ci dessous dans le forum je n'ai pas réussi à la faire fonctionner !
Je ne sais pas récupérer les résultats.
J'ai aussi tenté d'utiliser "preg_match_all('#<img(.*)src="(.*)" w#is',$string,$matches, $regs);" mais je ne sais pas à quoi sert "$regs" ni comment l'utiliser, je n'ai pas trouvé !!!
Voilà... Je suis vraiment bloqué !
Si quelqu'un peut m'en dire plus... un exemple "simple" qui fonctionne serait super... je le remercie d'avance.

Re: Comment boucler sur un preg_match ?

Posté : 14 nov. 2011, 11:05
par stealth35
c'est moins complexe de comprendre un getElementsByTagsName que de comprendre des regexps

Re: Comment boucler sur un preg_match ?

Posté : 14 nov. 2011, 12:33
par marih
RE bonjour,
plutôt que de me lancer dans du nouveau complètement inconnu pour moi, je préfèrerais savoir "récupérer" la variable contenant le résultat.
Mais ce n'est peut-être pas possible ou bien vous êtes comme moi... auquel cas il faudra que je change mon fusil d'épaule...
Is't all folks ?

Re: Comment boucler sur un preg_match ?

Posté : 14 nov. 2011, 13:15
par stealth35
RE bonjour,
plutôt que de me lancer dans du nouveau complètement inconnu pour moi, je préfèrerais savoir "récupérer" la variable contenant le résultat.
Mais ce n'est peut-être pas possible ou bien vous êtes comme moi... auquel cas il faudra que je change mon fusil d'épaule...
Is't all folks ?
je te conseil plus d'utilisé en premier lieux les bon outils,
$doc = new DOMDocument();
$doc->loadHTMLFile($path);

$images = $doc->getElementsByTagName('img');

foreach($images as $image) {
    echo $image->getAttribute('href');
}
c'est plus facile a lire non ? :wink:

Re: Comment boucler sur un preg_match ?

Posté : 14 nov. 2011, 16:05
par zeus
Modération :
Le multipostage est interdit sur PHPFrance.
La suite de la discussion a lieu ici : php-avance/pattern-pour-pre-match-t261156.html