[PHP] Web fetching probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Ik probeer dus de lijst met films van pathé op een pagina te weergeven.
Op de een of ander manier geeft hij maar de helft van de lijst weer.
Ik heb toch echt een unieke start en eind punt aangegeven. Hieronder is mijn code kunnen jullie even vertellen of hij ook bij harry potter stopt?
de opmaak enzo post ik niet mee.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?

$fd=fread(fopen("http://www.pathe.nl/films/film_lijst.asp", "r"), 100000);

if ($fd)  

{  
        
    $start = strpos($fd, "[img]\"../gfx/film/actueel.gif\"[/img]<br>");
    $finish = strpos($fd, "</p>");
    $length = $finish - $start;
     
    $code = Substr($fd, $start, $length);


    $DataPrint[1] = str_replace("[img]\"../gfx/film/actueel.gif\"[/img]<br>", "", $code);

    $DataPrint[1] = str_replace("<a href=\"synopsis.asp?id=", "<tr><td class=\"headline\" background=\"img/cell-back.gif\"><a target=\"new\" href=\"http://www.pathe.nl/films/synopsis.asp?id=", $DataPrint[1]);

    $DataPrint[1] = str_replace(" target=\"inhoud\"", "" , $DataPrint[1]);

    $DataPrint[1] = str_replace("&nbsp;</a><br>", "</a></td></tr>", $DataPrint[1]);

}  

echo $DataPrint[1];

?>


Loop er al een uur mee te pielen. Ik heb dit vaker gedaan en het ging allemaal perfect. Mocht je een oplossing hebben dan ben ik je erg dankbaar.

[ Voor 16% gewijzigd door mpie op 25-07-2004 13:46 ]

Wat je wil is niet altijd wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • williamvdh
  • Registratie: Oktober 2003
  • Laatst online: 23:40
http://www.williamvandenhoorn.nl/pathe.php

Krijg HP3 als laatst.

Groeten,
William

Acties:
  • 0 Henk 'm!

Verwijderd

Heb je zelf enig idee waar die 100000 voor staat op regel 3 van jouw voorbeeld?

[edit]
(Niet dat dat in dit geval uitmaakt, het bestand is klein genoeg, maar toch... zo hoort dat niet echt, een bestand inlezen.)

[ Voor 47% gewijzigd door Verwijderd op 25-07-2004 14:03 ]


Acties:
  • 0 Henk 'm!

  • EnsconcE
  • Registratie: Oktober 2001
  • Laatst online: 19-06 00:07
ik heb php.net ff doorgespit op de functie fread. volgens mij zit jou fout in deze regel:
code:
1
$fd=fread(fopen("http://www.pathe.nl/films/film_lijst.asp", "r"), 100000);


volgens mij heb je daarmee de max filesize op 100000. misschien moet daar wat anders?

Acties:
  • 0 Henk 'm!

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
ja ik ging hem eerst naar een bestand schrijven, maar dat doe ik nu maar even niet ik wil hem eerst even werkend krijgen. Daarna piel ik wel even verder.
Ik kom trouwens niet eens verder dan de eerste harry potter.

[ Voor 45% gewijzigd door mpie op 25-07-2004 14:08 ]

Wat je wil is niet altijd wat je nodig hebt!


Acties:
  • 0 Henk 'm!

Verwijderd

Het probleem zit hem in het feit dat hij niet op een gebruikelijke manier een bestand binnenhaalt. Met de functie file of de combinatie fopen/fread/feof dus.

Letterlijke voorbeelden staan in de manual.
When reading from network streams or pipes, such as those returned when reading remote files or from popen() and fsockopen(), reading will stop after a packet is available. This means that you should collect the data together in chunks as shown in the example below.

code:
1
2
3
4
5
6
7
8
<?php
$handle = fopen("http://www.example.com/", "rb");
$contents = '';
while (!feof($handle)) {
  $contents .= fread($handle, 8192);
}
fclose($handle);
?>


Note: If you just want to get the contents of a file into a string, use file_get_contents() as it has much better performance than the code above.

[ Voor 61% gewijzigd door Verwijderd op 25-07-2004 14:10 ]


Acties:
  • 0 Henk 'm!

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
EnsconcE schreef op 25 juli 2004 @ 14:07:
ik heb php.net ff doorgespit op de functie fread. volgens mij zit jou fout in deze regel:
code:
1
$fd=fread(fopen("http://www.pathe.nl/films/film_lijst.asp", "r"), 100000);


volgens mij heb je daarmee de max filesize op 100000. misschien moet daar wat anders?
ik zal zoals cheetah al zei even die 100000 weghalen momentje.

EDIT: Nope werkte niet. ik heb wel een voorbeeldje van hoe ik het laatst hebt gebruikt. http://cod.liquidbones.com en dan linkje voor player stats.

[ Voor 21% gewijzigd door mpie op 25-07-2004 14:11 ]

Wat je wil is niet altijd wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Verwijderd schreef op 25 juli 2004 @ 14:08:
Het probleem zit hem in het feit dat hij niet op een gebruikelijke manier een bestand binnenhaalt. Met de functie file of de combinatie fopen/fread/feof dus.

Letterlijke voorbeelden staan in de manual.

[...]
momentje gaan we even testen natuurlijk


EDIT:
Hij leest inderdaad alles uit. Nu nog testen of het in mijn opmaak kan en dan is het gefixed. In ieder geval thanx Cheatah voor de goeie richting.

[ Voor 19% gewijzigd door mpie op 25-07-2004 14:21 ]

Wat je wil is niet altijd wat je nodig hebt!


Acties:
  • 0 Henk 'm!

  • mpie
  • Registratie: Maart 2001
  • Laatst online: 25-01-2016
Helemaal geweldig hij doet het thanx again Cheatah

Wat je wil is niet altijd wat je nodig hebt!


Acties:
  • 0 Henk 'm!

Verwijderd

Naar mijn smaak kun je het beste zo een file of webpagina inladen:

PHP:
1
2
3
4
5
6
$page = @implode("", @file("http://www.pathe.nl/films/film_lijst.asp"));
if ($page) {
  // Process...
}
else 
  echo "Unable to load page!";


Duidelijk en robuust; òf je hebt de pagina helemaal, òf je hebt 'm niet, en het is nog sneller dan een fopen/fread loopje ook.

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
Ik vind het een erg ranzige oplossing om het met file en implode te doen, file_get_contents doet dat 'in een keer'

[ Voor 7% gewijzigd door PrisonerOfPain op 25-07-2004 21:10 ]


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Je kunt als je PHP5 gebruikt ook met de DOM de HTML inladen (werkt ook met brakke HTML3/4 met niet-afgesloten tags enzo) en daarmee door de tags heen met XPath de films ophalen :)

Acties:
  • 0 Henk 'm!

Verwijderd

PrisonerOfPain schreef op 25 juli 2004 @ 21:10:
Ik vind het een erg ranzige oplossing om het met file en implode te doen, file_get_contents doet dat 'in een keer'
Och verrek. Toen ik dit voor het eerst schreef bestond die functie nog niet, en hij is me sindsdien nooit opgevallen :).

Sorry dan, ik zal mijn leven beteren en voortaan file_get_contents gebruiken :p.
Pagina: 1