Dag Tweakers. Ik heb een probleem met de /e functie van preg_replace. Om vars in mijn template parser te replacen met de waarde van die vars gebruikte ik
Deze manier werkte perfect, de vars werden gewoon goed gereplaced. Nu ben ik de parser echter naar een class aan het herschrijven en loop ik tegen een probleem aan. De functie getVariables kan ik uiteraard niet zoals bovenstaand aanroepen, dat wordt immers $this->getVariables. Echter, wanneer ik
doe, wordt de functie niet aangereoepn. Doe ik bijv
dan wordt de functie wel aangeroepen, maar heeft \\2 weer geen waarde. Op php.net heeft iemand een soortgelijk probleem (eerste post beschrijving functie preg_replace), en heeft dat opgelost met eval. Ten eerste staat het gebruik van eval me sowieso al tegen (en niet zo'n beetje ook), en ten tweede werkt ook die oplossing niet bij mij. Het gaat dan om
In elk geval, ik kom dus geen stap verder. Misschien dat een tweaker een idee heeft hoe ik dit kan oplossen? De /e manier met \\2 werkte eerder perfect, dus die manier zou ik graag zo willen houden...
PHP:
1
| $str .= preg_replace ( "/(%)(.*?)(%)/e", "getVariables ( \"\\2\" )", $str ); |
Deze manier werkte perfect, de vars werden gewoon goed gereplaced. Nu ben ik de parser echter naar een class aan het herschrijven en loop ik tegen een probleem aan. De functie getVariables kan ik uiteraard niet zoals bovenstaand aanroepen, dat wordt immers $this->getVariables. Echter, wanneer ik
PHP:
1
| $str .= preg_replace ( "/(%)(.*?)(%)/e", "$this->getVariables ( \"\\2\" )", $str ); |
doe, wordt de functie niet aangereoepn. Doe ik bijv
PHP:
1
| $str .= preg_replace ( "/(%)(.*?)(%)/e", $this->getVariables ( "\\2" ), $str ); |
dan wordt de functie wel aangeroepen, maar heeft \\2 weer geen waarde. Op php.net heeft iemand een soortgelijk probleem (eerste post beschrijving functie preg_replace), en heeft dat opgelost met eval. Ten eerste staat het gebruik van eval me sowieso al tegen (en niet zo'n beetje ook), en ten tweede werkt ook die oplossing niet bij mij. Het gaat dan om
PHP:
1
| $str .= preg_replace ( "/(%)(.*?)(%)/e", 'eval(\'return $this->getVariables("$2");\')', $str ); |
In elk geval, ik kom dus geen stap verder. Misschien dat een tweaker een idee heeft hoe ik dit kan oplossen? De /e manier met \\2 werkte eerder perfect, dus die manier zou ik graag zo willen houden...