Avatar billede binderup Nybegynder
18. januar 2004 - 15:36 Der er 8 kommentarer og
1 løsning

Script til at konvertere HTML til XHTML

Jeg er ved at opdatere mit eget site, hvor jeg har lavet en blog. Til oprettelse af artikler og til kommentare bruger jeg KTML3 (http://www.interakt.ro/products/KTML/) som erstatning for et traditionelt textarea.

Det fungerer fint (også i Mozilla). Problemet er bare at den gemmer det i HTML og ikke xhtml, hvorved mine sider så ikke længere validere :-(

Jeg mangler et script der kan convertere HTML til XHTML uden at jeg skal have HTML Tidy installeret på serveren.
Avatar billede Slettet bruger
18. januar 2004 - 16:08 #1
Hvis koden ellers er valid html4.01 strict, burde det kunne lade sig gøre ved simpelthen at lave en preg_replace på de tags, der ikke lukkes i html. Dvs. <br>, <hr>, <img>, <meta> og <link>. Der er måske flere, men dette var dem jeg lige umiddelbart kunne komme i tanke om.

$xhtml=preg_replace("/<(br|hr|img|meta|link)\s([^>]*)>/","<\\1 \\2 />",$html);

Hvis tag-navne og attributter er skrevet med store bogstaver, skal de også rettes til, men det er en større opgave.

Derudover er der nogle programmer, der ikke lukker <p> selveom det (også i html) egentlig er forkert ikke at lukke den. Hvis dette også skal fixes, skal der lidt mere avanceret kode til at rette det.
Avatar billede Slettet bruger
18. januar 2004 - 16:09 #2
Ups. En fejl. Øjeblik.
Avatar billede Slettet bruger
18. januar 2004 - 16:19 #3
Denne burde være bedre. Jeg har dog ikke afprøvet, så jeg ved ikke helt, hvordan den vil håndtere en ren <br>.

$xhtml=preg_replace("/<(br|hr|img|meta|link)(\s[^>]*)?>/","<\\1 \\2 />",$html);
Avatar billede tefcke Nybegynder
18. januar 2004 - 18:01 #4
Husk <input ...>
Avatar billede Slettet bruger
18. januar 2004 - 18:17 #5
tefcke: Ja, naturligvis. Den er jo tit ganske vigtig.

$xhtml=preg_replace("/<(br|hr|img|meta|link|input)(\s[^>]*)?>/","<\\1 \\2 />",$html);

Jeg kom også lige i tanke om et par flere, der kan give samme problemer som <p>. Det er <li>, <dt> og <dd>. De to sidste er dog ikke ret brugt.
Avatar billede binderup Nybegynder
19. februar 2004 - 10:37 #6
Nå det er vist ved at være lukketid for dette spørgsmål.

Sandbox smider du et svar? Jeg er vist nødt til at lave en funktion/classe selv baseret på noget reg.exp
Avatar billede Slettet bruger
19. februar 2004 - 20:44 #7
Jeps
Avatar billede Slettet bruger
19. februar 2004 - 20:45 #8
Forresten kunne du jo tage et kig på kildekoden til HTML-tidy og se, om de har nogle gode ideer til ting, du har overset.
Avatar billede binderup Nybegynder
19. februar 2004 - 20:50 #9
eller håbe på at en af de mange daglige mails fra phpclasses kommer med løsningen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Capgemini Danmark A/S

Java Engineer

Politiets Efterretningstjeneste

Forretningsanalytiker til PET's IT-afdeling

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Applikationsarkitekt til stor applikationstransformation i Forsvaret

Capgemini Danmark A/S

Open Application (Denmark)