[preg_match_all] Récupérer valeurs dans XML et créer URLs en fonction
:coucou:
Voici ce que je veux faire:
1) je connais une url de la forme http://url_du_site.com/name1.aspx?label=1&lang=1&n=1
2) lorsque j'ouvre cette page, ça m'affiche un fichier xml de la forme:
<?xml version="1.0" encoding="UTF-8" ?>
- <ROOT>
- <Tag1>
- <Value1="XXX">
- <V FieldID="123456" Field2ID="789" ...
- <V FieldID="234567" Field2ID="678" ...
- <V FieldID="345678" Field2ID="567" ...
3) J'aimerais récupérer toutes ces valeurs de FieldID et, pour chaque valeur, ouvrir les liens suivants:
http://url_du_site.com/name2.aspx?id=123456&lang=1&n=1&diff=1&r=12345678910
Maintenant, la pratique :lol:
Voici comment je procède:
Code:
1 2 3 4
|
$url = 'http://url_du_site.com/name1.aspx?label=1&lang=1&n=1';
$file = file($url);
$file = preg_replace('#FieldID="(.+)" Field2ID#', "http://url_du_site.com/name2.aspx?id=$1&lang=1&n=1&diff=1&r=12345678910", $file); |
Pour l'instant, j'en suis là, je ne sais pas encore comment je vais faire ma boucle pour récupérer toutes les urls où j'aurais remplacé le $1 par la valeur récupérée dans mon premier lien, mais déjà, ça bloque.
Voici ce que j'obtiens:
http://url_du_site.com/name2.aspx?id=123456" Field2ID=...
Tout ce qui est après le $1 a disparu, ainsi que FieldID=
Je pensais que le preg_replace marchait de la manière suivante:
preg_replace('#chaine_à_chercher_de_début(.+)chaine_à_chercher_de_fin#','début_de_ma_nouvelle_chaine$1fin_de_ma_nouvelle_chaine,où_chercher);
avec (.+) représentant tout ce qu'il y a entre les 2 chaines de caractères définies et $1 représentant, dans la nouvelle chaîne, ce que l'on a trouvé...
J'ai mis des anti-slashes, j'ai essayé plein de trucs, mais rien ne marche :cry:
Merci par avance de votre aide.
Michel