Récupération de contenu sur un site externe

vincef62
Invité n'ayant pas de compte PHPfrance

15 mars 2011, 18:08

Bonjour à tous,

J'essaie de récupérer du contenu qui se trouve sur un site externe.

J'utilise une fonction curl pour récupérer le contenu entre 2 balises précises.

Voici mon code :

Code : Tout sélectionner

$curl = curl_init("http://www.exemple.com/page.html"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_HEADER, false); $page = curl_exec($curl); $error = curl_errno($curl); curl_close($curl); preg_match('`<div id="text">(.*?)</div>`Uis', $page, $match); echo $match[0];
Le problème est que cette fonction me renvoie tout ce qui se trouve entre les balises dès la première qu'il trouve.
Or, comment faire pour récupérer la deuxième balise qu'il rencontrerait ?

Ex :
J'ai ces balises :

Code : Tout sélectionner

<div id="text">Mon texte 1</div> <div id="text">Mon texte 2</div> <div id="text">Mon texte 3</div>
J'aimerai pouvoir récupérer "Mon texte 2".

Comment faire ?

Merci !

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

15 mars 2011, 19:27

[url=http://www.preg_match_all]preg_match_all[/url]

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

ViPHP
ViPHP | 5462 Messages

17 mars 2011, 11:49

[url=http://www.preg_match_all]preg_match_all[/url]

@+
nop DOMDocument :wink:

ViPHP
AB
ViPHP | 5818 Messages

17 mars 2011, 18:58

Ex :
J'ai ces balises :

Code : Tout sélectionner

<div id="text">Mon texte 1</div> <div id="text">Mon texte 2</div> <div id="text">Mon texte 3</div>
Tu es certain ? parce que normalement un id se doit d'être unique. Si ton html est non valide la récupération sera moins facile.

Sesquitertia
Invité n'ayant pas de compte PHPfrance

22 mars 2011, 19:13

Le plus sur, après avoir mis les identifiants uniques c'est de commenter les balises de fermetures:

Code : Tout sélectionner

<div id="text1">Mon texte 1</div><!-- fin #text1 --> <div id="text2">Mon texte 2</div><!-- fin #text2 --> <div id="text3">Mon texte 3</div><!-- fin #text3 -->
Et pour la fonction:

Code : Tout sélectionner

$curl = curl_init("http://www.exemple.com/page.html"); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); curl_setopt($curl, CURLOPT_HEADER, false); $page = curl_exec($curl); $error = curl_errno($curl); curl_close($curl); preg_match('`<div id="text2">(.*?)</div><!-- fin #text2 -->`Uis', $page, $match); echo $match[0];