Avatar billede josefdr Nybegynder
09. december 2008 - 22:46 Der er 3 kommentarer

Get file contents + Vælge tags fra og til

Hejsa

jeg sidder og er igang med en lille sjov opgave her.

Jeg sidder og prøver og se, om jeg via en text-form, kan parse en tekst "f.eks. Billy Joel", og så vil jeg via file_get_contents åbne youtube og via mit eget script søge efter film/musik.

Det jeg så vil, er at prøve og skære nogle ting fra, så jeg i sidste ende kun får filmene frem.

Dette er hvad jeg har lavet indtil videre. Ved ikke helt hvad jeg gør forkert, eller mangler at gøre. Er gået lidt død i det ;S

<?php
$sValue = "$_POST[sValue]";
$html  file_get_contents("http://www.youtube.com/results.php?search_query=$sValue");



preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);

foreach ($matches as $val) {
  echo "matched: " . $val[0] . "\n";
  echo "part 1: " . $val[1] . "\n";
  echo "part 2: " . $val[3] . "\n";
  echo "part 3: " . $val[4] . "\n";
 
  if($val[0] == "class=video-description") {
      print "ok";
  }
  if($val[1] == "class=video-description") {
      print "ok";
  }
  if($val[2] == "class=video-description") {
      print "ok";
  }
  if($val[3] == "class=video-description") {
      print "ok";
  }
  if($val[4] == "class=video-description") {
      print "ok";
  }
}

?>
Avatar billede jakobdo Ekspert
10. december 2008 - 06:45 #1
Alle resultater starter jo faktisk med: <div class="video-entry">
Så skal du ind i den div og hente info ud.
Hvis kun du vil have linket til videoen og title, er det så ikke noget i stil med:

if(preg_match_all('%href="(/watch\?v=.*?)"\s\stitle="(.*?)"%', $html, $matches)){
echo '<pre>';
print_r(array_unique($matches));
echo '<pre>';
}
Avatar billede josefdr Nybegynder
10. december 2008 - 22:07 #2
Hej Jakob

Tak for dit svar.
Jeg har leget lidt med det.
Problemet er dette:

I hver div, er der 3 links til den samme film.
Så jeg må på en eller anden måde ind og gøre så den kun tager det samme link én gang!

Der er jo forskellige muligheder. Men jeg synes de alle er lidt for trælse.

Hvis jeg gør det, som ville være nemmest, at hver gang jeg havde valgt ét link, gemte jeg det i en array, og så tjekkede jeg den næste om det er i mit array. Men det er mange links at gemme ;s

Har du nogen ideer?

Dette er min kode so far..

<?php
$sValue = "$_POST[sValue]";

$sContent = file_get_contents("http://www.youtube.com/results.php?search_query=$sValue");

if(preg_match_all('%href="(/watch\?v=.*?)"\s\stitle="(.*?)"%', $sContent, $sValues)){
    foreach(array_unique($sValues) as $sLinks => $value) {
        if($sLinks == $sLinks) {
            unset(array_unique($sValues)[$sLinks]);
        }
            echo '<pre>';
            //print_r(array_unique($sValues));
            print $sLinks;
            echo '<pre>';
        //}
    }
}
?>
Avatar billede jakobdo Ekspert
11. december 2008 - 20:34 #3
Denne kode må være det du søger:

<?php
//http://www.eksperten.dk/spm/855921
$sValue = $_GET['q'];

$sContent = file_get_contents('http://www.youtube.com/results.php?search_query='.$sValue);

if(preg_match_all('%href="(/watch\?v=.*?)"\s\stitle="(.*?)"%', $sContent, $sValues)){
    echo '<pre>';
    print_r(array_unique($sValues[0]));
    echo '<pre>';
}
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester