Help with a function

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.