23. januar 2009 - 19:22
Der er
11 kommentarer og 1 løsning
Sætte funktion på tekst via replace
Er det muligt, at sætte en funktion på en bestemt tekst, via replace? Lad os sig jeg har variablen: $text = "Dette er en test"; Så vil jeg gerne anvende en funktion på ordet "test" via replace. Men hvordan kan jeg implentere en funktion i nedenstående? $text = str_replace("test", "test", $text); Det skal ende ud med at virke således: $text = str_replace("test", min_funktion("test"), $text); Nogle der kan hjælpe?
Annonceindlæg fra Infor
23. januar 2009 - 19:49
#1
Det burde kunne. Dette er ikke testet... Function min_funktion($string) { return strtoupper($string); } $text = str_replace("test", min_funktion("test"), $text); Tror det kunne virke....
23. januar 2009 - 19:51
#2
$text = "Dette er en test"; $find = "test"; function min_funktion($match){ return "[--".$match[0]."--]"; } $text = preg_replace_callback('/'.preg_quote($find, '/').'/', 'min_funktion', $text);
23. januar 2009 - 20:07
#3
Jeg har fået mig formuleret forkert. Da jeg har skrevet spørgsmålet har jeg åbenbart glemt hvad jeg præcist ville. Det beklager jeg. Meningen var at du via 2 tekster skulle kunne starte og slutte en funktion. F.eks: $text = str_replace("[start]", min_funktion(, $text); $text = str_replace("[slut]", ),$text); Problemet er bare, at overstående ikke virker.
23. januar 2009 - 23:38
#4
Hvis jeg har forstået det rigtigt kan du måske bruge funktionen eval, der eksekverer PHP kode, fx: eval("myfunction('argument1','argument2',array('a, 'b')); echo 'hej';");
24. januar 2009 - 12:51
#5
tmi -> Jeg tror ikke funktionen kan hjælpe. Funktionen gør jo således, at kode ikke blive afviklet derinde. Jeg skal kunne anvende en funktion på noget bestemt tekst, via replace.
24. januar 2009 - 13:30
#6
Det er netop det locke's kode gør.
24. januar 2009 - 14:25
#7
Ja, men den bestemte tekst som jeg nævner, er som nævnt, den tekst der befinder sig imellem 2 ord. Til det kan jeg jo ikke bruge hans kode. Eller jo det kan jeg, den mangler blot nogle få ændringer, men jeg er ikke god til det med regular expressions osv.
24. januar 2009 - 15:21
#8
Prøv noget ala det her så: $start= "[start]"; $slut= "[slut]"; $text = "se her: [start]fede bogstaver[slut].." function min_funktion($match){ return "<b>".$match[0]."</b>"; } $text = preg_replace_callback("/".preg_quote($start).".*".preg_quote($slut)."/Us", 'min_funktion', $text);
24. januar 2009 - 15:59
#9
Sådan, det virker. Jeg takker dig tmi, vil du smide et svar?
24. januar 2009 - 16:05
#10
Og lige et lille sidste spørgsmål. Hvordan kommer linien: $text = preg_replace_callback("/".preg_quote($start).".*".preg_quote($slut)."/Us", 'min_funktion', $text); til at se ud, hvis du skal sende noget ekstra med i funktionen? Altså min_funktion(indhold-mellem-start-og-slut, 5) f.eks, så 5 tallet sendes med og kan bruges inde i funktionen.
24. januar 2009 - 16:39
#11
preg_replace("/".preg_quote($start).".*".preg_quote($slut)."/Use", "min_funktion('\\0', 5)", $text);
24. januar 2009 - 16:51
#12
Tak for hjælpen
Vi tilbyder markedets bedste kurser inden for webudvikling