Comment boucler sur un preg_match ?

marih
Invité n'ayant pas de compte PHPfrance

12 nov. 2011, 19:48

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

13 nov. 2011, 17:38

salut,

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


@+
Il en faut peu pour être heureux ......

marih
Invité n'ayant pas de compte PHPfrance

13 nov. 2011, 20:36

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é !

ViPHP
ViPHP | 5462 Messages

13 nov. 2011, 20:53

de tout façon pour parser de l'HTML c'est avec DOMDocument

marih
Invité n'ayant pas de compte PHPfrance

13 nov. 2011, 21:09

Bonsoir à tous,
c'est super sympa de répondre mais plus laconique tu meurs !
Merci quand même !

ViPHP
ViPHP | 5462 Messages

13 nov. 2011, 21:48

je suppose que t'es allé voir la doc pour essayé de comprendre tout ça ?

marih
Invité n'ayant pas de compte PHPfrance

14 nov. 2011, 10:48

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.

ViPHP
ViPHP | 5462 Messages

14 nov. 2011, 11:05

c'est moins complexe de comprendre un getElementsByTagsName que de comprendre des regexps

marih
Invité n'ayant pas de compte PHPfrance

14 nov. 2011, 12:33

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 ?

ViPHP
ViPHP | 5462 Messages

14 nov. 2011, 13:15

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:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 nov. 2011, 16:05

Modération :
Le multipostage est interdit sur PHPFrance.
La suite de la discussion a lieu ici : php-avance/pattern-pour-pre-match-t261156.html
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer