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?
Annonceindlæg fra Pax8
28. november 2001 - 21:59
#1
Er det over flere linier skal du vist skrive gim i stedet for gi
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...
28. november 2001 - 22:32
#3
Okay, så der det vist det her der virker $doc =~ s/<script[^>]*>(.*)<\\/script>//gim;
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;
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 :)
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.
29. november 2001 - 17:50
#7
erikjacobsen>> står g ikke for global og ikke greedy(slang)????
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.
29. november 2001 - 20:01
#9
helt enig :)
Kurser inden for grundlæggende programmering