/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
preg_match problemer
Fra : Martin


Dato : 10-10-06 14:04

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);


Jeg har prøvet med følgende pattern
/javascript:popup('/Kort/PrintMap.aspx?link=[a-Z0-9]', 'PrintMap', 700,
700, false);/

Denne giver en Unknown modifier 'K' warning

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);/

Denne giver så en Compilation failed: range out of order in character
class at offset 48 warning.

Så nu er jeg ret meget nede på bar bund.
Er der en der kan hjælpe mig?

 
 
Nezar Nielsen (11-10-2006)
Kommentar
Fra : Nezar Nielsen


Dato : 11-10-06 14:53

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

Martin (12-10-2006)
Kommentar
Fra : Martin


Dato : 12-10-06 14:26

Nezar Nielsen wrote:
> if(preg_match("!(javascript:popup\('/Kort/PrintMap\.aspx\?link=.*?',
> 'PrintMap', 700, 700, false\);)!", $str, $matches)){
> print $matches[1];
> }else{
> print "no match!";

Doh!
JA selvfølgelig skulle jeg have escapet liiidt flere tegn.
Havde set mig blind på det, og 40 andre ting, så var nok lidt forvirret :)

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste