learnMedlem sedan jan. 20051 143 inlägg
Jag försöker omvandla PHPs preg_match till javascript. Hittade funktionen match() men förstår inte riktigt hur den fungerar.
Det jag vill åstadkomma är följande:
Jag har en sträng:
str = '
<p>Hejsan</p>
<script type="text/javascript">
alert("test");
</script>
<p>Hejdå</p>
';
och vill nu hämta allt inom script-taggarna och spara i variabeln mittScript:
mittScript = 'alert("test")';
Hur kan jag göra?
voigtann1Medlem sedan juni 20018 810 inlägg
var myregexp = /<script[\s\S]*>([\w\W]+)<\/script>/img;
var match = myregexp.exec(subject);
while (match != null) {
//match[1]; get the text between script-tags
match = myregexp.exec(subject);
}
match[1]ge dig alert("test") i ditt exempel (även om det inte gå att ha en javascripts sträng på det sätt du försöker rendera ut den på.
learnMedlem sedan jan. 20051 143 inlägg
Tack för ditt exempel!
voigtann1 skrev:
även om det inte gå att ha en javascripts sträng på det sätt du försöker rendera ut den på.
Hur menar du nu?
voigtann1Medlem sedan juni 20018 810 inlägg
var str = 'hej
på
dig';
fungera inte i javascript, om det är radbrytningar så är det \n som gäller ;)
var str = 'hej\npå\ndig';
learnMedlem sedan jan. 20051 143 inlägg
voigtann1 skrev:
var str = 'hej
på
dig';
fungera inte i javascript, om det är radbrytningar så är det \n som gäller ;)
Aha, ja jo :)
Jag tänkte sedan köra javascripts eval() på den hämtade koden. Några invändningar, något som jag ska tänka på?
voigtann1Medlem sedan juni 20018 810 inlägg
varför inte bara rendera ut koden som den är, vet inte var du får koden ifrån men hade lika väl kunnat placera
<p>Hejsan</p>
<script type="text/javascript">
alert("test");
</script>
<p>Hejdå</p>
direkt in på sidan, eller bara i ditt fall med php ta bort allt som inte är <script>.....</script> med RegExp på server side, men visst eval fungera väl
learnMedlem sedan jan. 20051 143 inlägg
var myregexp = /<script[\s\S]*>([\w\W]+)<\/script>/img;
var match = myregexp.exec(subject);
while (match != null) {
//match[1]; get the text between script-tags
match = myregexp.exec(subject);
}
Hmm, den verkar stanna på första förekomsten. Jag vill att den hittar alla script-taggar. Strängen kan se ut så här:
str = '<p>Hejsan</p><script type="text/javascript">alert("test");</script><p>Hejdå</p><script type="text/javascript">alert("test2");</script>';
R: Nej föresten, det är bara den sista förekomsten som hittas, och jag tror jag kanske hittat felet. Min andra script-tagg innehåller måsvingar och lite andra tecken som inte hittas i ovanstående match(). Kan det stämma?
voigtann1Medlem sedan juni 20018 810 inlägg
var subject = '<p>Hejsan</p><script type="text/javascript">alert("test1");</script><p>Hejdå</p><script type="text/javascript">alert("test2");</script>';
var myregexp = /<script[\s\S]*?>([\w\W]*?)<\/script>/img;
var match = myregexp.exec(subject);
while (match != null) {
//match[1]; get the text between script-tags
alert(match[1]);
match = myregexp.exec(subject);
}
learnMedlem sedan jan. 20051 143 inlägg
voigtann1 skrev:
var subject = '<p>Hejsan</p><script type="text/javascript">alert("test1");</script><p>Hejdå</p><script type="text/javascript">alert("test2");</script>';
var myregexp = /<script[\s\S]*?>([\w\W]*?)<\/script>/img;
var match = myregexp.exec(subject);
while (match != null) {
//match[1]; get the text between script-tags
alert(match[1]);
match = myregexp.exec(subject);
}
Nja, nu alert'ar den alla matchningar två gånger om
R: My bad, det tycks fungera galant. Tack så mycket! :)