¿Reemplazar múltiples marcadores de posición con PHP?

Tengo una función que envía correos electrónicos del sitio (usando phpmailer), lo que quiero hacer es básicamente que php reemplace a todos los propietarios de placas en el archivo email.tpl con contenido que yo alimente. El problema para mí es que no quiero repetir el código, por eso he creado una función (a continuación).

Sin una función php haría lo siguiente en un script

<code>// email template file
$email_template = "email.tpl";

// Get contact form template from file
$message = file_get_contents($email_template);

// Replace place holders in email template
$message = str_replace("[{USERNAME}]", $username, $message);
$message = str_replace("[{EMAIL}]", $email, $message);
</code>

Ahora sé cómo hacer el resto pero estoy atascado en elstr_replace(), como se muestra arriba tengo múltiplesstr_replace() Funciones para reemplazar los marcadores de posición en la plantilla de correo electrónico. Lo que me gustaría es agregar elstr_replace() a mi función (abajo) y hacer que encuentre todas las instancias de[\] en la plantilla de correo electrónico, la entrego y la sustituyo por los valores de los marcadores de posición que le daré así:str_replace("[\]", 'replace_with', $email_body)

El problema es que no sé cómo pasaría múltiples marcadores de posición y sus valores de reemplazo a mi función y obtendría elstr_replace("[{\}]", 'replace_with', $email_body) Para procesar todos los marcadores de posición, los doy y los reemplazo con los valores correspondientes.

Debido a que quiero usar la función en varios lugares y evitar la duplicación de código, en algunos scripts puedo pasar los marcadores de posición de la función 5 y los valores y otros scripts deben pasar 10 marcadores de posición y valores a la función para usar en la plantilla de correo electrónico.

No estoy seguro de si necesitaré usar una matriz en los guiones que usarán la función y unafor haga un bucle en la función tal vez para obtener mi función php para que tome xx marcadores de posición y xx valores de una secuencia de comandos y haga un bucle a través de los marcadores de posición para reemplazarlos con sus valores.

Aquí está mi función que mencioné anteriormente. Comenté el guión que puede explicar mucho más fácil.

<code>// WILL NEED TO PASS PERHAPS AN ARRAY OF MY PLACEHOLDERS AND THERE VALUES FROM x SCRIPT
// INTO THE FUNCTION ?
function phpmailer($to_email, $email_subject, $email_body, $email_tpl) {

// include php mailer class
require_once("class.phpmailer.php");

// send to email (receipent)
global $to_email;
// add the body for mail
global $email_subject;
// email message body
global $email_body;
// email template
global $email_tpl;

// get email template
$message = file_get_contents($email_tpl);

// replace email template placeholders with content from x script
// FIND ALL INSTANCES OF [{}] IN EMAIL TEMPLATE THAT I FEED THE FUNCTION 
// WITH AND REPLACE IT WITH THERE CORRESPOING VALUES.
// NOT SURE IF I NEED A FOR LOOP HERE PERHAPS TO LOOP THROUGH ALL 
// PLACEHOLDERS I FEED THE FUNCTION WITH AND REPLACE WITH THERE CORRESPONDING VALUES
$email_body       = str_replace("[{\}]", 'replace', $email_body);

// create object of PHPMailer
$mail = new PHPMailer();

// inform class to use smtp
$mail->IsSMTP();
// enable smtp authentication
$mail->SMTPAuth   = SMTP_AUTH;
// host of the smtp server
$mail->Host       = SMTP_HOST;
// port of the smtp server
$mail->Port       = SMTP_PORT;
// smtp user name
$mail->Username   = SMTP_USER;
// smtp user password
$mail->Password   = SMTP_PASS;
// mail charset
$mail->CharSet    = MAIL_CHARSET;

// set from email address
$mail->SetFrom(FROM_EMAIL);
// to address
$mail->AddAddress($to_email);
// email subject
$mail->Subject = $email_subject;
// html message body
$mail->MsgHTML($email_body);
// plain text message body (no html)
$mail->AltBody(strip_tags($email_body));

// finally send the mail
if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
  } else {
  echo "Message sent Successfully!";
  }
}
</code>

Respuestas a la pregunta(3)

Su respuesta a la pregunta