24. september 2008 - 08:18Der er
24 kommentarer og 1 løsning
Udtræk af HTML
Jeg har fx et html dokument med navne og addresser, i dette er noget af teksten evt. kursiv eller/og fed. På en anden side vil jeg gerne have udtrækket enkelte af disse via php. Ex: Htmldokument: Anders Andersen; Anders Andersen, Lillegade 8, Xby Børge Børgesen; Børge Børgesen, Storegade 4, Yby Carlo Carlosen; Carlo Carlosen, Middelvej 2, Zby Erik Eriksen; Erik Eriksen, Højgade 1, Xkøbing
I en php vil jeg gerne udtrække, så der står følgende: Børge Børgesen; Børge Børgesen, Storegade 4, Yby Erik Eriksen; Erik Eriksen, Højgade 1, Xkøbing Disse udtræk skulle gerne komme ved at jeg et sted i scriptet kan lave en linie med "Børge Børgesen, Erik Eriksen", eller noget i den retning.
Jeg har bøvlet med fgets(), htmlspecialchars() og preg_match(), men det fungerer ikke. Jeg kunne forestille mig der eller ikke bliver tale om et særligt langt script.
Aller først, start med at hente hele html dokumentet ind i en streng:
$streng = file_get_contents("<din html fil>");
dernæst kan du bruge substring til at søge de forskellige elementer ud. Men jeg tror ikke jeg helt forstår spørgsmålet helt. Den html fil du skriver om, er det den som brugeren vil se, eller bruger du den kun for at læse oplysninger ud fra?
Nu er jeg jo ikke helt klar over præcis hvad han vil, men går ud fra han søger i en html fil og "plukker" de matchende elementer ud.
Men ja hvis han kan danne et associativt array med preg_match i stedet for et standard, vil han kunne bruge preg_match perfekt sådan cirka noget i stil med et her:
preg_match() er til at lave regular expressions / regulære udtryk :o) Så din kode er ikke helt korrekt. Men så længe hrole ikke viser lidt mere info, kan du eller jeg ikke hjælpe yderligere.
kkrasmussen: Jeg er ikke lige med på hvad fast definerede ting dækker over. Men standarden for mit html dokument er navn; navn, adresse, by, tlf. osv. osv. Det er altså meningen at scriptet skal søge på navnet før ";" - men kun vise teksten efter ";".
Det html dokument jeg har skal i sit fulde ikke være tilgængeligt. Det er et jeg løbende fylder på med navne og adresser.
Det som scriptet skal vise er nogle udvalgte personer, som jeg vælger for hver side. Fx en side hvor Børge Børgesen og Erik Eriksens addresser vises, en anden hvor Børge Børgesen og Carlo Carlosens addresser vises.
ok. Så html dokumentet er altså "blot" et andet dokument? Hvorfor så ikke gøre det super nemt for dig selv og bruge et xml dokument? Så kan du via DOM effektivt og nemt søge efter og finde lige nøjagtig det du efterspørger, og udskrive det med en simpel kommando. Jeg forstår ikke hvorfor det lige skal være et HTML dokument? Du kan endda gøre det nemmere for dig selv med en .txt fil, og så blot have information om 'en person på en linje, og næste person på linjen under.
Og så kan du med noget lignende dette benytte dokumentet effektivt:
Jeg tænkte også på alm. tekstfil, men jeg vil gerne have mulighed for kursiv og fed skrift, og netop det ville være lettere i et html, frem for alm. tekst. Desuden ville jeg gerne have mulighed for at lave afsnit i den tekst jeg skrver for hver person. Dog er det ikke afgørende.
Koden ovenover deler en streng(altså en hel linje) op i et to dimensionelt array ud fra ; og , Altså kan du jo sagtens have html tags med sådan: <b>Børge Børgesen</b>;<i>Børge Børgesen ,Storegade 4, Yby</i> og i koden kan du jo derfor blot gøre følgende:
echo $myar[0].': '.$myar["Børge Børgesen"][0].', '.$myar["Børge Børgesen"][1].', '.$myar["Børge Børgesen"][2].'<br />'; og du vil have html formateringen med.
"Jeg tænkte også på alm. tekstfil, men jeg vil gerne have mulighed for kursiv og fed skrift, og netop det ville være lettere i et html, frem for alm. tekst. Desuden ville jeg gerne have mulighed for at lave afsnit i den tekst jeg skrver for hver person."
Pricipielt er det ikke nogen god idé at formatere data, inden de gemmes. Din applikation bliver langt mere fleksibel og anvendelig, hvis du først formaterer data, når de 'udgives' ;o)
Olebole, ja det er rigtigt. Jeg ville heller aldrig gøre det 100% på den foreslåede måde, men ville slet og ret hente fra et XML med DOM i stedet. Og så ville smide html tags på i min udskrivning. Men jeg reagerer mest ud fra det stillede spørgsmål.
Jeg tror måske jeg har forklaret det mere besværligt end det er.
Det er kun meningen der skal vises alt hvad der står efter ";" ud for personen. Det var blot eksempler med adresse. Et andet eksempel kunne være: Mads Madsen; Mads er en dreng som bor i et hus.
Jeg har derfor prøvet at rette i scriptet, men det driller:
Jeg tror måske jeg har forklaret det mere besværligt end det er.
Det er kun meningen der skal vises alt hvad der står efter ";" ud for personen. Det var blot eksempler med adresse. Et andet eksempel kunne være: Mads Madsen; Mads er en dreng som bor i et hus.
Jeg har derfor prøvet at rette i scriptet, men det driller:
Ja sådan. Men altså, jeg ved ikke lige hvorfor det ikke virker. Det burde det. Men du skal nu stadig huske at det foreslåede kun vil virke hvis det er en fil hvor en linje er lig med én række af informationer. Og så skal du jo angive det fulde filnavn istedet for <minfil>.txt. ;)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.