Avatar billede Slettet bruger
28. november 2001 - 21:44 Der er 8 kommentarer og
1 løsning

replace-funktion igen

Jeg skal fjerne alle HTML og script tags fra $doc - hvilket indeholder HTML-koden fra en vilkårlig hjemmeside. Jeg bruger dette nu:

$doc =~ s/<script(.*)>(.*)<\\/script>//gi; #BURDE fjerne javascript koder

$doc =~ s/<style>(.*)<\\/style>//gi; #fjerner style koder

$doc =~ s/<!--(.*)-->//gi; #fjerner kommentarer

$doc =~ s/<([^>]*)>/ /gi; #fjerner html tags

Af en eller anden grund virker den første med javascript koderne ikke... nogen ideer?
Avatar billede erikjacobsen Ekspert
28. november 2001 - 21:59 #1
Er det over flere linier skal du vist skrive gim i stedet for gi
Avatar billede Slettet bruger
28. november 2001 - 22:19 #2
Nej, det virkede heller ikke... et andet spørgsmål: hvis jeg vil fjerne alle \\n sådan at $doc kun indeholder én linje, hvad skal jeg så bruge?

$doc =~ s/\\n//gim;

er ikke nok...
Avatar billede erikjacobsen Ekspert
28. november 2001 - 22:32 #3
Okay, så der det vist det her der virker

$doc =~ s/<script[^>]*>(.*)<\\/script>//gim;
Avatar billede erikjacobsen Ekspert
28. november 2001 - 22:35 #4
Linieskift et ikke kun \\n - det er kun unix. Jeg tror nok du skal

$doc =~ s/[\\n\\r]//gim;
Avatar billede Slettet bruger
28. november 2001 - 23:12 #5
Takker, jeg har fået hvad jeg havde brug for :) det er 15 point værd, skriv et svar :)
Avatar billede erikjacobsen Ekspert
28. november 2001 - 23:14 #6
Ja, det er det da. Og årsagen skal søges i at regulære udtryk i Perl
er grådige (greedy) - hvis du vil forfølge sagen i littteraturen.
Avatar billede breum Nybegynder
29. november 2001 - 17:50 #7
erikjacobsen>> står g ikke for global og ikke greedy(slang)????
Avatar billede Slettet bruger
29. november 2001 - 18:12 #8
Jeg tror, at erikjacobsen mente, at perl fjerner alt mellem første og sidste match af strengen. Eksempel:

<!--gemt kode-->offentlig kode<!--mere gemt kode-->

Hvis man vil fjerne alt mellem <!-- og --> så starter perl med at fjerne fra den første <!-- og slutter først ved den sidste --> i stedet for den første match af --> som man ellers skulle tro.
Avatar billede erikjacobsen Ekspert
29. november 2001 - 20:01 #9
helt enig :)
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
Kurser inden for grundlæggende programmering

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