|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-07-31 00:40 UTC] Grant dot Walters at walters dot co dot nz
The setup for my templating system:
$template=array(
"/({PAGETOP})/",
"/({PAGENAVBAR})/",
"/({PAGEMAIN})/",
"/({PAGELINKS})/",
"/({PAGESPACE})/",
"/({PAGETEXT})/",
"/({PAGENEWS})/",
"/({PAGEBOTTOM})/",
"/({PAGEDATA})/"
);
$pagevars=array(
"PAGETOP" => get_page($site->page_top),
"PAGENAVBAR" => get_page($site->page_top),
"PAGEMAIN" => get_page($site->page_main),
"PAGELINKS" => get_page($site->page_links),,
"PAGESPACE" => get_page($site->page_space),
"PAGETEXT" => get_page($site->page_text),
"PAGENEWS" => get_page($site->page_news),,
"PAGEBOTTOM" => get_page($site->page_bottom),
"PAGEDATA" => ""
);
$page = "{PAGETOP}{PAGENAVBAR}{PAGEMAIN}{PAGEBOTTOM}";
$page = preg_replace($template,$pagevars,$page);
echo $page;
Basically each physical page referenced via the get_page function is a text template that may contain HTML, text or variables in the form {VAR}.
Eventually content from a database ends up in a variable called PAGEDATA which is in the template stored in the page main variable.
The problem:
PAGEDATA ends up containing page text and it has something like "would cost around $16,000 to complete" in that text.
When the preg_replace is performed, something somewhere is assuming that $16 is a variable (which doesn't exist) and the text ends up as "would cost around ,000 to complete"
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Nov 06 07:00:01 2025 UTC |
I was trying to have to walk the array twice. The following works: $pagevars = str_replace("$","\\\$",$pagevars); $page = preg_replace($template,$pagevars,$page); The reason for using preg_replace is that it does a recursive? replace. My pagevars array actually has about 40 variables and the intention is to allow website designers to define their own additional variables that are added to the template string. Thanks for your help.