aan alle goede dingen komt een eind, webmasterplein.net 2003 - 2013
wij danken jullie voor al mooie momenten die dankzij dit forum ontstonden - Derk, Rutger en Stef

preg_replace + array vraagje!

Je komt er niet helemaal uit bij het scripten? Ɯbergoede functie geschreven? Alles met betrekking tot scripting, kun je hier terecht.

preg_replace + array vraagje!

Berichtdoor Stefan » 28 dec 2010 11:54

Hey mensen,

Tijd niet geweest maar wel topics gelezen!

Ik heb een vraagje over preg_replace in combinatie met een array, ik probeer voor mijn eigen kennis een template parser dinges te schrijven. Er gaan nu al veel dingen goed, tpl files uitlezen, dingen cachen e.d. echter kom ik niet achter op de oplossing van het volgende probleem:

Ik controleer in een .tpl bestand of de volgende regex voorkomt:
Code: Selecteer alles
$this->template = preg_replace("#\{VAR\{([a-zA-Z0-9\_]+)\}\}##", $this->replaces["\\1"], $this->template);


In replaces staat (en nog wel meer):
Code: Selecteer alles
$this->replaces = array('WEBSITE_NAME' => 'testwebsite', 'PAGE_TITLE' => $this->pageTitle);


Als ik nu dit uitvoer geeft hij in de template op de plekken waar ie de juiste regex tegenkomt niets (hij print wel de array met replaces):
Code: Selecteer alles
print_r($this->replaces);

$this->template = preg_replace("#\{VAR\{([a-zA-Z0-9\_]+)\}\}#", $this->replaces["\\1"], $this->template);


Als ik nu dit uitvoer geeft hij terug wat er in de regex staat (bijvoorbeeld WEBSITE_NAME of PAGE_TITLE):
Code: Selecteer alles
$this->template = preg_replace("#\{VAR\{([a-zA-Z0-9\_]+)\}\}#", "\\1", $this->template);


Weet iemand van jullie hier het antwoord op? Ik heb al het een en ander gegoogled maar daar heb ik nog niets bruikbaars gevonden.

Ik hoor het graag!
Opzoek naar een webdesigner? http://webtilize.net/
Avatar gebruiker
Stefan
wmpr
 
Berichten: 406
Geregistreerd: 27 dec 2007 14:08
Woonplaats: Ter Aar

Re: preg_replace + array vraagje!

Berichtdoor Stefan » 28 dec 2010 13:02

Tijdens mijn lunch zat ik er aan te denken:

Code: Selecteer alles
$this->template = preg_replace("#\{VAR\{([a-zA-Z0-9\_]+)\}\}#e", '$this->replaces[\\1]', $this->template);


Wat heb ik veranderd (voor de andere mensen met hetzelfde probleem)?
Ik heb de regex aangepast en na het laatste # een 'e' toegevoegd. Deze e flag zorgt ervoor dat PHP code die binnen de sting staat uitgevoerd wordt waardoor ik van de hele replacement een PHP statement kon maken.
Opzoek naar een webdesigner? http://webtilize.net/
Avatar gebruiker
Stefan
wmpr
 
Berichten: 406
Geregistreerd: 27 dec 2007 14:08
Woonplaats: Ter Aar


Keer terug naar PHP, ASP, SQL



cron