php fread ja tallennus ??

Muu phpBB2:n liittyvä keskustelu tänne
Alueen säännöt
1.1.2009 loppuu virallinen tuki phpBB2 versiolle. http://www.phpbbsuomi.com/viewtopic.php?f=1&t=2189

Konvertoiminen phpBB3 versioon on suositeltavaa.
riiali
Aloittelija
Aloittelija
Viestit:1
Liittynyt:07 Huhti 2006, 14:22
php fread ja tallennus ??

Viesti Kirjoittaja riiali » 07 Huhti 2006, 14:24

Osaisko joku auttaa aloittelevaa php käyttäjää, että miten mä saan tallennettua tietiltä www-sivuilta aina tietyt tekstit esim .txt-tiedostoon helposti? Mulla on parikymmentä sivustoa, josta mun pitää päivittäin käydä pomimassa tietyt tiedot ja käsittääkseni se onnistuu php:llä suhteellisen helposti??

Avatar
Merri
MODaaja
MODaaja
Viestit:155
Liittynyt:21 Huhti 2006, 23:32
Paikkakunta:Riihimäki
Viesti:

Viesti Kirjoittaja Merri » 22 Huhti 2006, 04:18

file_get_contents lataa sivun suoraan tekstimuuttujaksi. Tämän jälkeen sivun tietoja täytyy parsia. Tämä puolestaan onnistuu helpoiten tutkimalla ladatun sivun koodista, millä hakusanalla saa rajattua halutun tiedon. Sivu voi olla vaikka tällainen:

Koodi: Valitse kaikki

<html><head><title>uutisia</title></head><body>
<h1>Sivukivaa</h1>
<table><tr><td>
<p>Kaikkea epäkivaa tarpeetonta.</p>
</td></tr></table>
<table><tr>
<td>Tämän</td>
<td>minä</td>
<td>haluan</td>
<td>talteen</td>
</tr><tr>
<td>Rivejä</td>
<td>on</td>
<td>tosiaan</td>
<td>useita</td>
</tr></table>
<table><tr><td>
<p>Tämä minä en halua</p>
</td></tr></table>
</body></html>
Tällöin ensimmäinen pois karsittava kohta on...

Koodi: Valitse kaikki

</td></tr></table>
<table>
<table>:n jälkeisen <tr>:n haluamme säilyttää, sillä haluamme mahdollisimman identtiset tiedot käsittelyn helpottamiseksi. Siten etsimme tuon yllä olevan tekstin (haussa täytyy olla mahd. paljon ylimääräistä ja varmasti muuttumatonta tietoa, ts. tageja), ja poistamme sen ja kaiken sitä edeltävän tiedon, tämä onnistuu esimerkiksi substr:llä.

Tämän jälkeen meidän täytyy poistaa lopustakin ei-tarpeellinen tieto. Tässä tapauksessa haku on helppo, yksinkertaisesti etsitään vain </table> ja poistetaan sen jälkeinen tieto. Tämän jälkeen meillä on jäljellä muodollisesti samanlaista dataa, joka on helppo jakaa osiin. str_replace:lla kannattaa tosin poistaa mm. rivinvaihdot sekä kaikki tarpeeton roska (jota ei tuossa yllä olevassa esimerkissä niin kauheasti ole). Tarkoituksena on, että muunnosten jälkeen on jäljellä parsimiskelpoista tietoa, joka voi olla esimerkiksi tällaisessa muodossa:

Tämän[[[]]]minä[[[]]]haluan[[[]]]talteen
Rivejä[[[]]]on[[[]]]tosiaan[[[]]]useita

Eli tässä on vaikka lisätty vielä rivinvaihdot jokaisen </td></tr>:n tilalle, poistettu <tr><td> -osuus ja sen jälkeen korvattu </td><td> muotoon [[[]]]. Sitten onkin jo helppo homma explodella hajoittaa tekstit ensin riveittäin arrayhyn ja sitten nämä rivit vielä explodettaa tuolla [[[]]]-pätkällä. Sitten voikin jo alkaa tallennella juttuja aivan minne haluaa.

Viestiketju Lukittu

Paikallaolijat

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 72 vierailijaa