02. januar 2005 - 15:40Der er
6 kommentarer og 1 løsning
Stryge næsten alle HTML-tags fra en streng
Jeg sidder og lusker med noget CMS på et website, hvor nogle editors skal have mulighed for at ændre indeholdet af nogle HTML-sider. Til det bruger jeg en komponent jeg har fundet på nettet (ASP.NET) til at tage imod indtastninger, med mulighed for at formattere teksten en smule.
Alt i alt virker denne løsning ret godt, problemet opstår først når folk copy/paster indhold ind. Kommer der fx content fra Word ligner den kode der bliver gemt, noget der er løgn.
Efter at have kigget lidt på det, er jeg noget frem til at jeg ønsker mig en reg. exp. der kan følgende:
1. Slette alle HTML-tags, som jeg ikke excpilit har givet lov til (fx "p", "b", "i"). Alle andre skal altså erstattes med ingenting i en replace.
2. Fjerne alle attributes fra alle html tags, så "<p style=xxx>" bliver til "<p>". Igen forestiller jeg mig at man kan replace med en tom streng.
Om der skal foretages én eller to replaces er sådan set ligemeget. Hvis nogen derude kan skrive den/de rigtige reg. exp. sætninger er jeg meget tilfreds :)
\S betyder ikke-whitespace, som der skal være en eller flere af, bagefter det må der (grupperet !-) komme hvadsomhelst men ikke >, som så _skal_ være bagefter ...
-- men hvis du mener, at du giver lov til f.eks. p, b, i og ul-tags, men ikke andre kan du f.eks.
var txt = "Dit pastede html"; var reg = /<([^pbi]|ul)[^>]*>/ig;//bemærk tilføjelsen af |ul og flytningen af paranteserne !-) txt = txt.replace(reg,""); var reg2 = /(<\S+)([^>]*)>/g;//også her ændret !-) txt = txt.replace(reg2,"$1>");
Jeg kan ikke lide den første expression. Hvad hvis der kommer et tag som starter med et P efterfulgt af noget andet?
Mit ønske til søgningen:
Vi søger efter tegnet: < efterfulgt af hvad som helst andet end (p|h1|b|i|table|tr|td) efterfulgt af enten et space og x antal karakterer samt et > eller blot et >
Er du med? Jeg kan ikke helt selv se hvordan jeg skal kringle det...
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.