2010-04-08, 00:36
  #1
Medlem
Mysfarbrorn-s avatar
Tjena!

Jag har suttit hela kvällen och läst på php.net, sökt igenom flashback och googlat som en dåre utan framgång.

Hur som helst:
Jag har börjat på med ett projekt där man ska få fram en direktlänk till en film på IMDb.com, eftersom om jag går in på imdb.com manuellt och söker på t.ex. filmen "The green mile" så kommer jag till en slags mellansida där det finns flera olika länkar som är relaterade till mitt sökord.

Det jag vill göra då är att söka igenom mellansidan efter ett ID-nummer som jag senare kan använda för att bygga upp en komplett URL till sidan för filmen, och jag vet var ID-numret finns, och att jag ska använda mig av substr() och strpos(), men jag får inte riktigt till det.

Koden ser just nu ut såhär:

[PHP]$page = file_get_contents("http://www.imdb.com/find?s=all&q=the+green+mile");
$start = strpos($page, '<table><tr> <td valign="top"><a href="/title/tt');
$end = strpos($page, '/" onClick="(new Image()).src=');

$result = substr($page, $end, $end - $start);

echo $result;[/PHP]

Alltså, ID-numret jag vill åt befinner sig:

Citat:
<table><tr> <td valign="top"><a href="/title/tt-HÄR-/" onClick="(new Image()).src=

Och då är min fråga, hur kan jag komma åt det?

Hoppas att jag var tydlig nog!
MVH
__________________
Senast redigerad av Mysfarbrorn- 2010-04-08 kl. 00:52.
Citera
2010-04-08, 01:00
  #2
Medlem
metapods avatar
Vid sådana här problem är det betydligt lättare att använda sig utav regular expressions. Jag länkar till relevanta funktioner och dokument nedan:

För att matcha den text du vill ha ut skulle du kunna använda dig utav något liknande det nedan:
Kod:
<?php
$sample_haystack =<<<EOF
<p><b>Popular Titles</b> (Displaying 1 Result)<table><tr> <td valign="top"><a href="/title/tt0120689/" onClick="(new Image()).src='/rg/find-tiny-photo-1/title_popular/images/b.gif?link=/title/tt0120689/';">
EOF;

preg_match (
  '#<td valign="top"><a href="/title/tt(\d+)/" onClick="\(new Imag#',
  $sample_haystack,
  $match
);

if (sizeof ($match) === 0)
  die ("error, could not find a valid match!");

printf ("string that matched: %s\n", $match[0]);
printf ("            imdb id: %s\n", $match[1]);

?>

Om du dock faktiskt vill använda dig utav substr så rekommenderar jag dig börja med att kolla in i vilken ordning argumenten ska skrivas (och självfallet vilken ordning du har specificerat dem i din källkod).
Citera
2010-04-08, 03:01
  #3
Medlem
Det här tycker jag underlättar väldigt när man vill läsa ut källkod från andra sidor, när man väl fått grepp om det kan man få ut precis vad man vill.

http://simplehtmldom.sourceforge.net/
Citera
2010-04-08, 12:39
  #4
Medlem
snousers avatar
Det finns annars färdiga parsingverktyg för just IMDB

http://sourceforge.net/projects/imdbphp/

Har själv använt de ett par gånger, och de fungerar väldigt bra!
Citera
2010-04-08, 15:10
  #5
Medlem
Mysfarbrorn-s avatar
Tack för svaren!

Citat:
Ursprungligen postat av choob
Det här tycker jag underlättar väldigt när man vill läsa ut källkod från andra sidor, när man väl fått grepp om det kan man få ut precis vad man vill.

http://simplehtmldom.sourceforge.net/

Jag kollade igenom det lite och lyckades markera alla <a href>, då den skrev ut mängder av olika resultat (bl.a. det ID-nummer som jag var ute efter).
Du vet inte hur jag ska gå till väga för att få fram endast detta nummer?
Citera
2010-04-08, 15:30
  #6
Medlem
myrdals avatar
Gör inte sådär. Använd dig av en parser istället.

Och att använda sig av regexp för det där är ett klassiskt Bad Idea(tm).
Citera
2010-04-08, 15:38
  #7
Medlem
Mysfarbrorn-s avatar
Citat:
Ursprungligen postat av myrdal
Gör inte sådär. Använd dig av en parser istället.

Och att använda sig av regexp för det där är ett klassiskt Bad Idea(tm).

Okej.. Jag gick in och kikade lite på php.net, men vilken typ rekommenderar du mig att använda? parse_str() ?
Citera
2010-04-09, 10:32
  #8
Medlem
myrdals avatar
Jag tror inte riktigt att du förstår vad det är jag försöker säga. Kika in på simpledomhtml som killen ovanför länkade till.
Citera
2010-04-09, 12:40
  #9
Medlem
snousers avatar
Citat:
Ursprungligen postat av Mysfarbrorn-
Okej.. Jag gick in och kikade lite på php.net, men vilken typ rekommenderar du mig att använda? parse_str() ?

Citat:
Ursprungligen postat av myrdal
Jag tror inte riktigt att du förstår vad det är jag försöker säga. Kika in på simpledomhtml som killen ovanför länkade till.

Exakt, använd simpledomhtml i stället.

Såg att du hade lite vetskap om jQuery i en utav trådarna och då även Selectors.
http://api.jquery.com/category/selectors/
Vilket (borde) gör att du inte kommer att få några problem att använda Simple Dom Html
Citera
2010-04-09, 23:13
  #10
Medlem
Mysfarbrorn-s avatar
Tack för svaren.
Citera
2010-04-17, 12:19
  #11
Medlem
Nikksters avatar
Om du vill göra sidorna manuellt som folk ska kunna söka efter, så kan du göra såhär:

[PHP]

$page = (INT)$_REQUEST['page'];
$id = (INT)$_REQUEST['id'];

if($page == 1) {

echo ' content';

}
[/PHP]
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in