Page 1 sur 1

Extraire une partie d'un code source

Posté : 21 mars 2015, 17:40
par loopio
Bonjour à tous,

J'utilise une API pour ajouter des vidéos sur mon site(un sorte de service de replay).
Une fois l'API chargée, je n'ai plus qu'à renseigner une ID de vidéo pour l'insérer sur mon site à l'aide d'un bout de code html basique.

Deux solutions s'offrent à moi :
- Soit je vais voir tous les jours les vidéos ajoutées sur le service, et les ajoute manuellement, et éventuellement supprime celles qui ont disparu.
- Soit je suis flemmard, et j'aimerai bien que ça se fasse tout seul :)

Je vous laisse deviner dans quel état d'esprit je me situe ^^

Donc voilà l'idée générale :

Scrapper le code source de la page web qui génère le service de replay, et choper toutes les ID des vidéos dans le code source.
Comme ça, si ils ont changé, ça se mettra à jour tout seul à chaque chargement de ma page.

Je suis à la recherche des lignes qui contiennent ceci :
<a href="/videos/heros/mavideo_cat_exemple.html?vid=1200456">
J'en suis arrivé à ça qui fonctionne bien, mais ça me retourne des doublons, puisque la ligne ci-dessus se retrouve deux à trois fois dans le code source.
function getCode($url){
$code = "";
$lines = file($url);
foreach ($lines as $line) {
if (strstr($line, 'vid=', true)) {
	$part = explode('vid=', $line);
	$part = explode('"', $part[1]);
	$result=$part[0];
    $code.= 
    "<div style='margin-top:5px;'>".htmlspecialchars($result) ."</div><div style='clear:left;'></div>".
    "</div>";
   }
  }
return $code;
}
echo getCode('http://www.domaine.com/url_de_la_page_de_replay.html/');
Cette fonction me retourne effectivement uniquement les id. Ex :
985666
455222
122333
455222
122333
985666

Comment faire pour ne pas avoir de doublons ?

Après avoir un peu cherché, je pensais utiliser array_unique() , mais je ne sais pas comment l'utiliser correctement dans mon code, et mes tentatives se sont toutes révélées infructueuses.

Merci d'avance pour un coup de pouce et de m'avoir lu jusqu'ici.

Bonne journée
Ludo

Re: Extraire une partie d'un code source

Posté : 21 mars 2015, 18:11
par tof73
tu fais une fonction qui retourne un tableau d'id, donc le début de ton code qui a l'id dans $result
puis
$tab[$result] = $result;
et une autre fonction qui retourne le code html à partir du tableau, avec un
foreach($tab as $key => $val){

}

Re: Extraire une partie d'un code source

Posté : 21 mars 2015, 20:55
par loopio
Bonsoir tof73,
merci de ta réponse.
Si j'ai bien compris il faut faire ça
function getCode($url){
$code = "";
$lines = file($url);
foreach ($lines as $line) {
if (strstr($line, 'vid=', true)) {
	$part = explode('vid=', $line);
	$part = explode('"', $part[1]);
	$result=$part[0];
	$tab[$result] = $result;
	foreach($tab as $key => $val){
echo''.$val.'<br>';
     }
   }
  }
return $code;
}
En faisant cela je me retrouve avec encore plus de doublons. Ou il y a truc que j'ai pas pigé dans ton code...

Re: Extraire une partie d'un code source

Posté : 21 mars 2015, 21:21
par loopio
Problème résolu autrement. En regardant les lignes qui étaient en doublons, j'ai remarqué qu'elles avaient une class. Du coup j'ai fait un autre if (strstr($line, 'class', false)) en début de fonction, et tout est ok maintenant.

Par contre, c'est du bricolage même si ça marche... J'aurais bien aimé arriver à utiliser la fonction array_unique pour voir comme ça fonctionne ..

Merci en tout cas Tof