08. december 2000 - 13:36Der er
32 kommentarer og 1 løsning
HTML tegn skal delvist slettes
Hejsa. Jeg har et problem med et script som skal slette alle HTML og XML tegn undtagen følgende: <br> <b></b> <i></i> <a href....><a/>
Jeg har prøvet alt muligt men intet er lykkedes endnu. Jeg vil helst ikke poste noget kode da det sikkert ødelægger kreativiteten på hvordan problemet kan løses. Jeg beder IKKE om et helt færdig lavet script (hvis du har et du vil dele, er det dog fint med mig), men ønsker en idé til hvordan jeg skal søge igennem en streng og fjerne de tegn jeg ikke ønsker.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
td>> Hvis jeg bruger dit forslag, så bliver koderne jo ikke slettet, men bare oversat og dermed vist som kode. Det er jeg ikke interesseret i. Kender ikke RegExp. den må jeg lige kigge lidt på.
tulle>> Jo, ved at bruge InStr kan man jo søge på alle \'<\', men de gange jeg har forsøgt mig har jeg fået script timeouts. Når den finder et tegn jeg ikke ønsker, skal det slettes. Hermed bliver strengen mindre. Når den finder et tegn jeg ønsker, skal scriptet faktisk til at starte forfra med at søge fra et nyt sted. Det har givet mig nogle voldsomme loops, som selvfølgelig ikke er rart rent performance-mæssigt og heller ikke hvis den timer out.
If Not (strTag = \"<b>\" Or strTag = \"</b>\" Or strTag = \"<i>\" Or strTag = \"</i>\" Or strTag = \"<br>\" Or strTag = \"</a>\" Or Left(strTag, 8) = \"<a href=\") Then strTag = \"\"
strString = strLeft & strTag & strRight
Select Case (strTag > \"\") Case True: Index = EndIndex Case False: Index = Index + 1 End Select Loop
Jamen, jeg kender ikke syntaksen i ASP - derfor Perl. Men som sagt, hvis de siger ASP kan det der med regulære udtryk, så må de jo også kunne dette. Og så ... synes jeg jo det er nemmere ... ;-)
Med $b =~ s/(<((br|b|i|\\/b|\\/i|a|\\/a)[^>]+)>)/%%%\\2%%%/gim; i stedet for $b =~ s/(<(br|b|i|\\/b|\\/i|a[^>]+|\\/a)>)/%%%\\2%%%/gim; kan den så også klare parametre på de andre tags: <br clear=\"left\"> f.eks. Og man kan jo skrive <B> - selv om det ikke er standard.
ek>> Perl siger mig intet. Jeg fatter slet ikke hvad der foregår i det du skriver. Men din idé er sej nok, hvis jeg kunne få skidtet til at virke med asp.
Som I kan se står jeg nu i et dilemma, da jeg spurgte efter en idé. td kom godt nok først med hans. Hvad gør jeg???
Prøv at søge på www.google.com efter \"regular expressions\" så får du noget du kan bruge.. jeg gjorde det selv, men jeg har ikke nogle konkrete URL\'s..
Vha. erik\'s expression finder flg. alle forekomster af <b></b>,<i></i>,<br> og <a href..></a>... men det er sådan set lidt a\'la en Not match vi skal bruge for at replace alle andre med \"\".
Erik, aner du noget om, om det er muligt at lave en \"NOT\" expression ?
Beklager, td, det kan ikke. Man kan lave not på ét tegn, men ikke på følger af tegn.
Altså i ovenstående siger jeg f.eks. [^>], som betyder alle tegn overhovedet bortset fra >. Det er meget nemmere end at skrive dem alle 255. Og lidt nemmere end at skrive de to ranges, der skal til (hvor er nu min ascii tabel...)
Jeg har siddet og leget lidt med regular expressions og har fået nogenlunde fod på hvad det er der sker i td\'s eksempel. Men hvad sker der her i ej\'s:
Ja, jeg fandt ud af at regexp er jo faktisk sproguafhængigt. Men jeg kunne godt tænke mig at få ovenstående \"oversat\" til ASP eller i hvert fald en mindre forklaring.
Synes godt om
Ny brugerNybegynder
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.