Hola Sitepointers,
I am trying to write a function to replace placeholders in a template.
I know the code works outside of a function.
It might be my syntax of writing a function that is actually wrong.
Thanks
Will
$output = '
<div id="menu">
<ul id="menu"> <li ><a href="/">[home]</a></li> <li ><a href="/agents">[agents]</a></li> <li ><a href="/sell">[sell]</a></li> <li ><a href="/contact">[contact]</a></li> <li ><a href="/register">[register]</a></li> <li ><a href="/login">[login]</a></li> </ul></div>
';
/*
function replace_placeholders($output){
*/
//replace placeholders
$language_id = '1';
$query = "SELECT placeholder_name, placeholder_language_name FROM placeholder, placeholder_language
WHERE placeholder.placeholder_id = placeholder_language.placeholder_id
AND language_id = '$language_id'";
$result = mysql_query($query);
$pln_array = array();
$pn_array = array();
while ($array = mysql_fetch_assoc($result)) {
$placeholder_name = $array['placeholder_name'];
$placeholder_language_name = $array['placeholder_language_name'];
array_push($pln_array,$placeholder_language_name);
array_push($pn_array,$placeholder_name);
}
$output = str_replace($pn_array,$pln_array,$output);
/*
}
*/
echo $output;
You need a
return $output;
in your function.
And you need to call the function too.
Still not working:
$output = '
<div id="menu">
<ul id="menu"> <li ><a href="/">[home]</a></li> <li ><a href="/agents">[agents]</a></li> <li ><a href="/sell">[sell]</a></li> <li ><a href="/contact">[contact]</a></li> <li ><a href="/register">[register]</a></li> <li ><a href="/login">[login]</a></li> </ul></div>
';
function replace_placeholders($output){
//replace placeholders
$language_id = '1';
$query = "SELECT placeholder_name, placeholder_language_name FROM placeholder, placeholder_language
WHERE placeholder.placeholder_id = placeholder_language.placeholder_id
AND language_id = '$language_id'";
$result = mysql_query($query);
$pln_array = array();
$pn_array = array();
while ($array = mysql_fetch_assoc($result)) {
$placeholder_name = $array['placeholder_name'];
$placeholder_language_name = $array['placeholder_language_name'];
array_push($pln_array,$placeholder_language_name);
array_push($pn_array,$placeholder_name);
}
$output = str_replace($pn_array,$pln_array,$output);
return $output;
}
replace_placeholders($output);
echo $output;
$output = replace_placeholders($output);
echo $output;
I really do have my “idiot” hat on today. Thanks so much.
Uhm, you do know it’s a bad idea to put a query call in a recursive function yes? That’s going to run pretty slow if things recurse much.