Avatar billede websmith Nybegynder
04. september 2003 - 17:45 Der er 12 kommentarer og
1 løsning

Regex til at fjerne alle script tags inkl indhold fra tekst

Hej med jer,

Jeg har bokset med at få et regex til at fungere.

Jeg skal have fjernet alle forekomster af <script> tags i noget indhold jeg har, inkl al indhold i disse tags.

Et eksempel på noget indhold kunne være:
----------------------------------

Dette er indholdet med den indlejrede script
<IMG SRC="http://www.test.com/common_images/bw_cha3.gif" WIDTH="120" HEIGHT="129" BORDER="0" VSPACE="8"  USEMAP="#test">

<br>


<script language="JavaScript" type="text/javascript">
if (!window.adDebug) {
document.write('<SCR'+'IPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="/common_scripts/adcode.js"><\/SCRIPT>');
}
</script>

<DIV style="border-bottom:1px #999966 solid; padding-bottom:3px; margin-bottom:3px; border-top:1px #999966 solid; padding-top:3px; margin-top:3px;"><FONT SIZE=-2 COLOR=#FFFFFF CLASS=AutoTocClear>

<script language="javascript" type="text/javascript">
if (!window.sponsorAdParams) {
    setChannel("tc")
    setSub("")
    window.commonAdVars = buildCommonVars()
    buildAdParams()
}
if (window.adDebug) window.adDebug(window.sponsorAdParams, "tc_general_4.htm", "");
document.write('<SCR'+'IPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="http://ads.test.com/js.ng/'+sponsorAdParams+'?"><\/SCRIPT>');
</script>
her er noget indhold

---------------------
Jeg har prøvet med følgende:

<script[^<]*</script>|<script[^<]*|<[^>]*>|<[^>]*

Men den fjerner ikke det hele. Er der nogen med en bedre ide, så sig bare til :)
Avatar billede websmith Nybegynder
04. september 2003 - 17:49 #1
Dvs. Jeg har prøvet med:

string retStr="alt det ovenstående";
string reg="<script[^<]*</script>|<script[^<]*|<[^>]*>|<[^>]*";
retStr=Regex.Replace(retStr,reg,"",RegexOptions.Compiled | RegexOptions.IgnoreCase); 

Men jeg får returneret al mit indhold, hvor script tag'sn er lavet om til følgende:


');
}

');
Avatar billede clausjul Nybegynder
04. september 2003 - 17:59 #2
Har du prøvet med Regex.Replace(retStr,"<script>(.*?)</script>") ?
Avatar billede clausjul Nybegynder
04. september 2003 - 18:00 #3
Hov - det skulle være

Regex.Replace(retStr,"<script>(.*?)</script>","") ?
Avatar billede websmith Nybegynder
04. september 2003 - 18:06 #4
Ja, nu har jeg og det giver mig bare

if (!window.adDebug) {
document.write('');
}



if (!window.boxAdParams) {
    setChannel("tc")
    setSub("")
    window.commonAdVars = buildCommonVars()
    buildAdParams()
}
if (window.adDebug) window.adDebug(window.boxAdParams, "tc_general_9.htm", "");
document.write ('');

som rest af mit script
Avatar billede clausjul Nybegynder
04. september 2003 - 18:09 #5
Prøv denne:
Regex.Replace(retStr,"<script language=(.*?)</script>","")
Avatar billede Slettet bruger
04. september 2003 - 18:52 #6
Prøv med:
string reg = "<script[^<]*</script>"
Avatar billede websmith Nybegynder
04. september 2003 - 18:55 #7
jjust:


Jeg har allerede <script[^<]*</script> i min regex
Avatar billede Slettet bruger
04. september 2003 - 19:36 #8
Jeg ville have fortsat svaret men det ringede lige på døren, så her kommer resten.

"<script[^<]*</script>" duer ikke, idet den ikke tager højde for < mellem to script tags.

Man kan derimod starte med at matche hele det første tag.

"<script[^>]*>"

Herefter er vi intereserede i alt hvad der kommer indtil </script>, men pga. "Greedy" matching(dvs., længste match mulig) kan vi ikke bare skrive ".*".

Hvis vi derimod benytter ?, kan vi gøre * "lazy", dvs. den behøves kun at mache et tegn ad gangen. Se om det fører til at hele udtrykket blivet matchet. Hvis ikke matches endnu et tegn, ellers er vi færdige.

Så konklussion er at du kan bruge:

string reg = "<script[^>]*>.*?</script>".

Vær opmærksom på at ovenstående tag ikke matcher nestede tags, f.eks. <script><script>bla</script></script>
Avatar billede websmith Nybegynder
04. september 2003 - 19:58 #9
Hmm. Jeg kunne ikke få det til at virke, med mindre at jeg lavede det om til:

<script[^>]*>[.\s\S]*?</script>

.* virkede ikke, men det er måske fordi den ikke tager hensyn til new lines osv.

Men ellers tak for hjælpen :)
Avatar billede websmith Nybegynder
04. september 2003 - 20:15 #10
Hvis du ikke allerede kender programmet Expresso, så kan jeg anbefale det. Det er super godt at teste regex i.

Det kan downloades på: www.ultrapico.com
Avatar billede Slettet bruger
04. september 2003 - 21:27 #11
Det må jeg prøve næste gang jeg leger med Perl :-)
Avatar billede odegaard Nybegynder
04. september 2003 - 22:02 #12
websmith: Kanon link! Lige hvad man længe har gået og ønsket sig til jul.
Avatar billede websmith Nybegynder
08. september 2003 - 09:15 #13
:)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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