Gå til innhold

PHP spørsmål, parsing


Anbefalte innlegg

Det koden skal gjøre er:

1. lese kildekoden på en side

2. legg til en checkbox i kildekoden etter hver <br>

3. print resultatet

 

og checkboxen skal kunne lagres, altså om jeg krysser en av dem av i nettleseren (og evt trykker submit) så skal det lagres til neste gang jeg refresher siden.

 

for at det kanskje skal bli lettere å forstå: med den kunne du foreksempel krysse av alle linjer du har lest i en lang artikkel på nett.

 

trenger litt starthjelp. det høres enkelt ut, er bare det at jeg akkurat har begynt å friske opp i PHPen igjen så eksempler er den beste læring.

Lenke til kommentar
Videoannonse
Annonse

Kildekoden kan du skaffe med file_get_contents('url');

Så kan du replace alle '<br>' og '<br />' med '<br /><input type="checkbox">' gjennom: str_replace(array('<br>', '<br />'), '<br /><input type="checkbox">', file_get_contents('url'));

Koden blir altså noe slik som:

echo nl2br(str_replace(array('<br>', '<br />'), '<br /><input type="checkbox">', htmlentities(file_get_contents('url'))));

Skrevet veldig kompakt.. :p

Hvis du ikke skjønte koden over, prøv å dele den opp på flere linjer.. Grunnen til at jeg bruker htmlentities er at ellers ville content, ikke kode, blitt skrevet ut, og du ville fått bilder og alt mulig annen drit fra siden ^^

 

Neste skritt blir vel å plassere et form rundt så du kan lagre infoen =)

Lykke til!

Lenke til kommentar

Ettersom at koden skal brukest til å lagre linjene han har lest så er det vel best om du ikkje bruker htmlentities da det vil gjøre at all html blir vist og det blir utrolig vanskelig å lese artikkelen.

 

Prøv heller noe slik:

// Hent koden
$kode = file_get_contents('url');

// Legg til <form action=".." method="post"> før <html> og </from> før </html>
$kode = preg_replace('#(<html.*?>)#', '\\1<from action="..." method="post">', $kode);
$kode = str_replace('</html>', '</form></html', $kode);

// Legg til ein check box etter alle <br>
echo str_replace(array('<br>', '<br />'), '<br /><input type="checkbox">', $kode);

Endret av Runar0
Lenke til kommentar

Var bevisst at jeg satte html-koden til å bli vist, fordi dersom man faktisk "kjører" html koden så vil du få opp hele layoutet til siden du skal lese. Dette gjør igjen at du kan få checkboxer på mange merkelige steder, ettersom <br /> ikke brukes kun i artikkelteksten, men kan bli brukt andre steder også.

 

Vet ikke hva trådstarter ønsker her, men et annet problem som oppstår er jo at ikke ethvert linjeskift er representert ved en <br /> tagg i koden.. Mange sider bruker <p> taggs for å markere avsnitt, og så lar de browseren håndtere linjeskift utifra wrap.. Andre sider brukt <br /> for å markere avsnitt, men ikke linjeskift..

 

Tror at for å oppnå et slikt oppsett som trådstarter ønsker, så må man på en eller annen måte klare å hente ut kun artikkelteksten fra siden, sette tekstfont til monospace, og så definere antall characters per linje... Da kan man printe ut en og en linje med PHP og sette en checkbox på slutten. Hva tror du Runar0?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...