slakkis Skrevet 17. mars 2006 Del Skrevet 17. mars 2006 Hei sliter med et problem rundt en preg_replace og array keys. jeg har følgende kodesnutt som er en del av en template engine jeg er nesten ferdig med å lage foreach($this->variables as $variable => $content) { if(!is_array($content)) { // behandle variabler som vanlig $this->template_file = preg_replace("/\{$variable\}/",$content,$this->template_file); } else { // om det er et dobbelt array i $this->variables, så skal denne behandles her $this->template_file = preg_replace("/\{$variable\[(.*?)\]\}/",$content["\$1"],$this->template_file); } } som dere ser, så er dette en kodesnutt som bytter ut {noe} - tagger i templatene med de variablene som er assignet i sourcekoden som lages. De blir assignet slik: array("var" => "variabel innholdet") jeg prøver å få til slik at jeg kan assigne hver og enkelt array key om jeg assigner et dobbelt array som følger: array("variabel" => array(0 => "null",1 => "en", 2 => "to")) taggene som skal replaces i templaten ser lik ut: {variabel[0]} {variabel[1]} {variabel[2]} Jeg har _nesten_ fått det til, men det er noe rot med regexen.. $this->template_file = preg_replace("/\{$variable\[(.*?)\]\}/",$content["\$1"],$this->template_file); når jeg kjører denne koden, så kommer det KUN ut første verdi, altså 'null'. Hvis jeg forandrer til: $this->template_file = preg_replace("/\{$variable\[(.*?)\]\}/","$1",$this->template_file); så blir keyene listet opp.. så hvorfor fungerer det ikke når jeg prøver med $content["\$1"]? Har prøvd alt av muligheter, med og uten escaping osv.. Men jeg får det ikke til uansett hva jeg gjør .. Må jeg angripe dette på en annen måte eller er det faktisk mulig? Håper problemstillingen min var greit nok forklart.. mvh Håkon Lenke til kommentar
stiber Skrevet 18. mars 2006 Del Skrevet 18. mars 2006 Det er faktisk mulig. prøv: <?php $this->template_file = preg_replace("/\{$variable\[(.*?)\]\}/e",'$content["$1"]',$this->template_file); ?> Legg merke til /e modifieren. Den gjør at replacement string blir evaluert som php kode. Lenke til kommentar
slakkis Skrevet 18. mars 2006 Forfatter Del Skrevet 18. mars 2006 kjempemessig! Det løste problemet Er ganske fersk på regulære uttrykk både i PHP og generellt, så jeg har ikke lært meg bruken av modifiers enda. Uansett, tusen takk for hjelpen mvh Håkon Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå