Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] Het rippen van een pagina (https://forum.scholieren.com/showthread.php?t=392461)

Martin 28-02-2003 10:45

[PHP] Het rippen van een pagina
 
Ik wil graag met een scriptje de topics weergeven waarin het laatst activiteit is geweest. Op de server van s.com staat het bestand hottopic.php, deze wil ik dus graag uitlezen en weergeven.

Ik heb tot nu toe de volgende code:
PHP-code:

<?php 
$open 
fopen("http://forum.scholieren.com/hottopic.php""r"); 
$read fread($open200000); 
echo 
"$read";
fclose($open); 
?>

Nu krijg ik dus een resultaat zoals je hier kan zien.

Mijn vraag: Hoe rip ik de topic id`s etc uit dit XML bestand en stop ik ze in een nieuw bestand?

Triloxigen 28-02-2003 10:54

PHP-code:

$data eregi("<replierid>(.*)</replierid>"$lezen$tekst); 
echo 
$tekst[1]; 

zoiets
(zal wel weer klachten kijgen, maar goed :D)

Martin 28-02-2003 11:05

Citaat:

McLaren schreef:
PHP-code:

$data eregi("<replierid>(.*)</replierid>"$lezen$tekst); 
echo 
$tekst[1]; 

zoiets
(zal wel weer klachten kijgen, maar goed :D)

Dit heb je gejat van PHPfreakz ;)
maar dit is dus ook niet helemaal wat ik zoek.

Ik wil dus een aantal variabelen krijgen:

$topic_id
$topic_titel
$topic_starttijd
$topic_laatstereactie
$topic_reacties
$topicstarter_naam
$topicstarter_id
$laatstreactie_naam
$laatstereactie_id

Maar volgens mij gaat dat nooit lukken :(

Triloxigen 28-02-2003 11:09

Komt idd van phpfreakz, zit op school dus kan maar beperkte dingen nu :D
Maar zo kun je toch meerdere dingen ervanaf halen :s

Triloxigen 28-02-2003 11:13

PHP-code:

<?
$code[1] = "topic_id";
$code[2] = "$topic_titel";
$code[3] = "$topic_starttijd"; 
$code[4] = "topic_laatstereactie";
$code[5] = "topic_reacties";
$code[6] = "topicstarter_naam";
$code[7] = "topicstarter_id";
$code[8] = "laatstreactie_naam";
$code[9] = "laatstereactie_id";

while (list ($key, $val) = each ($code)) {
    $data = eregi("<$val>(.*)</$val>", $lezen, $tekst); 
    $$val = $val[1];
    echo "\$$val = $val[1];";
}

?>

Krijg ik nu credits? :D

edit: nu denk ik er trouwens niet aan dat er meerdere replies etc staan in hottopic :/

Martin 28-02-2003 11:21

Citaat:

McLaren schreef:
Krijg ik nu credits? :D
Maar natuurlijk :p

Ik heb nu onderstaande code, maar krijg een vage return:
PHP-code:

<?php 
$open 
fopen("http://forum.scholieren.com/hottopic.php""r"); 
$read fread($open200000); 

$code[1] = "id";
$code[2] = "titel";
$code[3] = "startts"
$code[4] = "lastts";
$code[5] = "topicstarter";
$code[6] = "starterid";
$code[7] = "replies";
$code[8] = "last_replier";
$code[9] = "replierid";

while (list (
$key$val) = each ($code)) {
    
$data eregi("<$val>(.*)</$val>"$read$tekst); 
    $
$val $val[1];
    echo 
"\$$val = $val[1];";
}

fclose($open); 
?>


Triloxigen 28-02-2003 11:24

als je ook zegt wat je dan te zien krijgt.. :D

Martin 28-02-2003 11:25

Citaat:

McLaren schreef:
als je ook zegt wat je dan te zien krijgt.. :D
Zie: http://scholieren.dynamicdreams.nl

Triloxigen 28-02-2003 11:26

Je krijgt van iedere key de 2e letter te zien???
Dat snapo ik niet :s

Martin 28-02-2003 11:28

Citaat:

McLaren schreef:
Je krijgt van iedere key de 2e letter te zien???
Dat snapo ik niet :s

Me neither, maar ik ga ff tosties maken, ben zo terug.

Triloxigen 28-02-2003 11:32

PHP-code:

<?php 
$open 
fopen("http://forum.scholieren.com/hottopic.php""r"); 
$read fread($open200000); 

$code[1] = "id";
$code[2] = "titel";
$code[3] = "startts"
$code[4] = "lastts";
$code[5] = "topicstarter";
$code[6] = "starterid";
$code[7] = "replies";
$code[8] = "last_replier";
$code[9] = "replierid";

while (list (
$key$val) = each ($code)) {
    
$data eregi("<$val>(.*)</$val>"$read$tekst); 
    $
$val $tekst[1];
    echo 
"\$$val = $tekst[1];";
}

fclose($open); 
?>

Dit zal al iets beter werken :D:D
(er stond $var[1] ipv $tekst[1])

Of het trouwnes werkt weet ik niet :D

Martin 28-02-2003 11:38

Citaat:

McLaren schreef:
PHP-code:

echo "code"

Dit zal al iets beter werken :D:D
(er stond $var[1] ipv $tekst[1])

Of het trouwnes werkt weet ik niet :D

Nope, it doesn`t work, hij geeft alleen de variabele ID van het eerste topic een waarde mee (oid)

JJzD 28-02-2003 12:20

php heewft een xml parser

http://www.php.net/manual/tw/ref.xml.php

stuk sneller en beter

Martin 28-02-2003 12:35

Citaat:

JJzD schreef:
php heewft een xml parser

http://www.php.net/manual/tw/ref.xml.php

stuk sneller en beter

gelezen en dan snap ik er nog niets van :(

JJzD 28-02-2003 12:48

Citaat:

Martin schreef:
gelezen en dan snap ik er nog niets van :(
ken je xml??
dan zou ik dat eerst leren

Martin 28-02-2003 13:02

Citaat:

JJzD schreef:
ken je xml??
dan zou ik dat eerst leren

Ik kende XML niet, ik heb nu een tutorial @ w3schools gelezen en snap de opbouw van XML en hoe je het kan gebruiken. Maar dan snap ik nu nog niet hoe ik de PHP XML parser moet gebruiken.

Enlightenment 28-02-2003 14:32

Citaat:

JJzD schreef:
php heewft een xml parser

http://www.php.net/manual/tw/ref.xml.php

stuk sneller en beter

Taiwanees ken ik persoonlijk niet zo goed.

Engels wel:
http://www.php.net/manual/en/ref.xml.php

:p

Martin 28-02-2003 14:46

Citaat:

Enlightenment schreef:
Taiwanees ken ik persoonlijk niet zo goed.

Engels wel:
http://www.php.net/manual/en/ref.xml.php

:p

http://www.php.net/manual/ne/ref.xml.php

Nederlands ook goed? ;)

Enlightenment 28-02-2003 14:58

Citaat:

Martin schreef:
http://www.php.net/manual/ne/ref.xml.php

Nederlands ook goed? ;)

Kan ook :)

Ik lees dingen het liefst in het Engels.

Manuzhai 28-02-2003 15:25

Ik heb hier vrij veel ervaring mee, voor mijn NML channeltjes. Ik gebruik meestal preg_match_all() om de shit uit de pagina te halen, en daarna gewoon weer in XML met leuke string-concatenatie uitpoepen. Erg moeilijk is het niet.

Hier is trouwens de XML-parsing class die ik gebruik. Misschien nuttig.

Manuzhai 28-02-2003 15:27

Ik zou nl doen in plaats van ne. ;) En als je dan ook nog een Nederlandse mirror pakt is het helemaal mooi.

TouchOfDarkness 28-02-2003 15:31

Citaat:

Manuzhai schreef:
Ik heb hier vrij veel ervaring mee, voor mijn NML channeltjes. Ik gebruik meestal preg_match_all() om de shit uit de pagina te halen, en daarna gewoon weer in XML met leuke string-concatenatie uitpoepen. Erg moeilijk is het niet.

Hier is trouwens de XML-parsing class die ik gebruik. Misschien nuttig.

idd met preg_match_all(), zou ik ook gekozen hebben. Wel makkelijkste oplossing om meerdere patterns over de hele content op te halen.

Enlightenment 28-02-2003 16:04

Handigst lijkt me om alles in een array te gooien. Waarvan elk element ook weer een array is.

Dan krijg je:
$hottopic[1]['id]
en
$hottopic[2]['last_replier']
etc.

Dan kun je dat mooi opmaken met php:

PHP-code:

<table>
<?
foreach($hottopic as $topicnr => $topic)
 echo('<tr><td><a href="http://forum.scholieren.com/showthread.php?'
.'s=&threadid='.$topic['id'].'>'.$topic['titel'].'</a></td></tr>');
?>
</table>

Sorry voor de opmaak. :p

Martin 28-02-2003 17:59

Ik heb nu dit:
PHP-code:

<?php 
$open 
fopen("http://forum.scholieren.com/hottopic.php""r"); 
$read fread($open200000);

$topic preg_match_all("<topic>(.*)</topic>"$read$topic);

echo 
"$topic[0]<P>";
echo 
"$topic[1]<P>";

fclose($open); 
?>

Maar dan geeft hij een error in de regel bij preg_match_all(). Wat doe ik fout?

TouchOfDarkness 28-02-2003 18:23

een pattern matching regex werkt niet helemaal hetzelfde als een gewone regular expression

PHP-code:

preg_match_all("/<topic>(.*)<\/topic>/ms"$read$topic); 

zou wel moeten werken dacht ik...

Martin 28-02-2003 18:24

Citaat:

TouchOfDarkness schreef:
een pattern matcher werkt niet helemaal hetzelfde als een regular expression

PHP-code:

preg_match_all("/<topic>(.*)<\/topic>/ms",_$read,_$topic); 

zou wel moeten werken dacht ik...

Parse error: parse error in c:\apache\htdocs\php.net\002.php on line 5


:(

TouchOfDarkness 28-02-2003 18:25

waarom staan die underscores voor de varnames?? :confused:

edit: kennelijk foute quote van mij

grmbl, backslashes worden weer ge-escaped:

PHP-code:

preg_match_all("#<topic>(.*)</topic>#ms"$read$topic); 


Martin 28-02-2003 18:30

Ik heb nu geen errors meer, maar ook geen result. :-/

Martin 28-02-2003 20:32

Het resultaat

Enlightenment 28-02-2003 20:47

Citaat:

Martin schreef:
Het resultaat
Congrats ;)

Triloxigen 01-03-2003 11:22

ohw, wilde je dat doen..
Dan had jer gewoon str_replace kunnen gebruiken dus :D

EN het zijn nieuw "Nieuwste topics"maar "nieuwste replies".

En volgens mij heeft vB die functie zelf ook al :D


Alle tijden zijn GMT +1. Het is nu 03:31.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.