Martin wrote:
> Jeg har denne streng:
>
> javascript:popup('/Kort/PrintMap.aspx?link=aHR0cDovL2tvcnRsZC5rcmFrLmRrL3NjcmlwdHMvZXNyaW1hcC5kbGw/bmFtZT1rcmFrZ2lzMSZjPTImcG5nPXkmc3Y9MSZ0eHQ9MSZiYz1mZmZmZmYmdD02MTQ4MTM3MDAmYj02MTQ3MzM3MDAmbD02NzgxNjAwMCZyPTY3OTE2MDAwJmltZ3c9NjQwJmltZ2g9NTEyJmtrPTEwNDA3Njg1NjA=&width=640&height=512&points=320,256&query=c2tvdmfDpXJkZW4gMTAgNDEwMA==',
> 'PrintMap', 700, 700, false);
>
>
> Det eneste jeg ved hvad der står i er:
> javascript:popup('/Kort/PrintMap.aspx?link=
>
> og
> ', 'PrintMap', 700, 700, false);
>
[...]
>
> Så har jeg prøvet at escape /'erne så den ser således ud:
> /javascript:popup('\/Kort\/PrintMap.aspx?link=[a-Z0-9]', 'PrintMap',
> 700, 700, false);/
Under alle omstændigheder skal dine paranteser jo quotes, så det kan du
starte med.
Derudover er ? et specieltegn i regulære udtryk, så det skal også quotes.
Derudover betyder . alle tegn i regulære udtryk, så det skal også quotes.
karakterklassen [a-Z0-9] dækker, som du har skrevet den(uden + til
sidst) kun over ET tegn i den klasse, jeg foretrække den ikke-grådige
..*? notation, men det er måske bare mig. (men bemærk at der var en
forwardslash midt i).
Altså omskriver jeg dit udtryk som:
if(preg_match("!(javascript:popup\('/Kort/PrintMap\.aspx\?link=.*?',
'PrintMap', 700, 700, false\);)!", $str, $matches)){
print $matches[1];
}else{
print "no match!";
}
- bemærk at jeg har brugt ! i stedet for / til at indkranse udtrykket
med, så slipper man for at quote forwardslashes.
(evt. newline er indsat af min newsreader og ikke mig.)
--
Mvh. Nezar Nielsen
http://gorilla.dk