Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Sisällön haku toiselta sivustolta (PHP)

Temsku [28.05.2008 10:21:30]

#

Tilannekuvaus: On olemassa keskustelupalsta, jossa henkilö x kirjoittaa päiväkirjaa. Muut keskustelupalstan käyttäjät voivat kommentoida henkilön x päiväkirjaa. Nyt henkilö x on avannut omat kotisivut, ja haluaa tehdä omille kotisivuilleen mirrorin kyseisestä päiväkirjastaan. Henkilö x ei halua kuitenkaan siirtää kuin omat kirjoituksensa, eli muiden kommentit pitäisi jättää pois.

Avainsana on käsittääkseni file_get_contents, mutta tarkempia ohjeita kaivattaisiin.

Kyseisellä keskustelupalstalla topicin osoitteeseen vaikuttaa ainoastaan sivutus. Osoite on muotoa palsta.net/index.php?showtopic=jokuluku (jokuluku on luonnollisesti topic-kohtainen). Osoitteen perään lisätään sivutuksen mukaan &st=0, &st=15, &st=30 jne...

tsuriga [28.05.2008 14:05:18]

#

file_get_contents + stripos + substr, eli etsit hakemastasi tiedostosta esimerkiksi jotain uniikkia sieltä lähdekoodeista ja käytät tätä paikkatietoa erotellessasi henkilön viestiä.

Esimerkkilähdekoodi

<table>
 <tr><td>Lähettäjä</td><td>Viesti</td></tr>
 <tr><td>Henkilö x</td><td>Päiväkirjaviesti</td></tr>
...
</table>

Ja tässä tapauksessa etsisit siis esimerkiksi stripos-funktiolla tiedostosta merkkijonoa '<tr><td>Henkilö x</td><tr>', jonka jälkeen käyttäisit löytämääsi indeksiä substr-funktiossa (huomaa, että stripos palauttaa merkkijonon alkukohdan, joten siihen tulee lisätä sopiva luku, jotta leikkaus alkaa halutusta kohtaa). Lopetuskohdan saat, kun haet taas stripos-funktiolla viestin aloituskohdan jälkeen ilmenevää merkkijonoa '</td></tr>' (kts. stripos parametrit, $offset). Joudut varmaankin koettamaan useampaan kertaan, että saat merkkijonoindeksit kohdalleen - itse en jaksa aina edes miettiä kun trial and error -taktiikalla tuntuu pääsevän helpommalla. Kannattaa varmaankin ennen tiedostoihin kirjoittelua tulostaa haettu data niin saat sen nopeammin esille ja huomaat jos jokin on pielessä.

Temsku [29.05.2008 10:53:51]

#

Näillähän se tuntuu menevän suht kivuttomasti, kiitoksia!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta