Preg replace met arrays
Mark D
24/09/2011 12:44:40Hey allemaal,
Ik ben atm bezig met het schrijven van een basic frameworkje. Inmiddels ben ik aangeland op het schrijven van de template parser.
In het template staan 'tags' in de volgende vorm: {$variabele}. Verder zit er in mijn template class een member array, in de volgende vorm: $tpl_vars = array('variabele' => 'waarde'). Nu wil ik deze tag vervangen door de onhoud van $tpl_vars['variabele']. Hiertoe heb ik de volgende simpele preg_replace:
Jullie zien waarschijnlijk al snel dat dit niet gaat werken, omdat er geen key $1 in de tpl_vars array zit. Maar nu mijn vraag: hoe vervang ik de tag door de waarde in de goede array_key? Als je vervangt door een string kan je gewoon $1 of \\1 gebruiken, maar dit werkt nu natuurlijk niet. Heeft iemand ideeen hoe dit is op te lossen?
Alvast bedankt,
Mark
Ik ben atm bezig met het schrijven van een basic frameworkje. Inmiddels ben ik aangeland op het schrijven van de template parser.
In het template staan 'tags' in de volgende vorm: {$variabele}. Verder zit er in mijn template class een member array, in de volgende vorm: $tpl_vars = array('variabele' => 'waarde'). Nu wil ik deze tag vervangen door de onhoud van $tpl_vars['variabele']. Hiertoe heb ik de volgende simpele preg_replace:
Jullie zien waarschijnlijk al snel dat dit niet gaat werken, omdat er geen key $1 in de tpl_vars array zit. Maar nu mijn vraag: hoe vervang ik de tag door de waarde in de goede array_key? Als je vervangt door een string kan je gewoon $1 of \\1 gebruiken, maar dit werkt nu natuurlijk niet. Heeft iemand ideeen hoe dit is op te lossen?
Alvast bedankt,
Mark
Gewijzigd op 24/09/2011 12:45:15 door Mark D
PHP hulp
26/12/2024 15:27:23- SanThe -
24/09/2011 13:21:18Preg_replace() is niet mijn sterke kant.
Hoe groot is het array()?
Dit zou ook moeten werken:
Hoe groot is het array()?
Dit zou ook moeten werken:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
foreach($tpl_vars as $key => $value)
{
$tpl_contents = str_replace('{$' . $key . '}', $value, $tpl_contents);
}
?>
foreach($tpl_vars as $key => $value)
{
$tpl_contents = str_replace('{$' . $key . '}', $value, $tpl_contents);
}
?>
Mark D
24/09/2011 13:28:57Een typische grootte is rond de 50 keys, niet echt veel dus. En ik kan idd ook met str_replace werken voor deze toepassing, nog niet aan gedacht. Ik wil alleen later wil ik ook hetzelfde principe toepassen op andere tags, waarvoor ik look forwards en look backwards operators voor nodig heb. En dan zit ik aan preg_replace vast helaas... Ik kan dus voorlopig wel even verder, maar straks ga ik weer tegen hetzelfde probleem aanlopen.
Jacco Brandt
24/09/2011 13:34:14Mark D
24/09/2011 13:41:11Jacco Brandt
24/09/2011 14:36:56De enige oplossing die ik kan bedenken is een str_replace met arrays, maar dat werkt ook weer nét wat anders.