Mehrere Platzhalter durch PHP ersetzen?

Ich habe eine Funktion, die Site-E-Mails versendet (mit phpmailer). Ich möchte, dass PHP im Grunde alle Placheholder in der Datei email.tpl durch Inhalte ersetzt, die ich füttere. Das Problem für mich ist, dass ich keinen Code wiederholen möchte, weshalb ich eine Funktion erstellt habe (siehe unten).

Ohne eine PHP-Funktion würde ich folgendes in einem Skript machen

<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>

Jetzt weiß ich, wie ich den Rest erledige, aber ich stecke fest auf demstr_replace()Wie oben gezeigt habe ich mehrerestr_replace() Funktionen zum Ersetzen der Platzhalter in der E-Mail-Vorlage. Was ich hinzufügen möchte ist dasstr_replace() zu meiner Funktion (unten) und finde alle Instanzen von[\] In der E-Mail-Vorlage gebe ich es und ersetze es durch die Platzhalterwerte, die ich so gebe:str_replace("[\]", 'replace_with', $email_body)

Das Problem ist, dass ich nicht weiß, wie ich mehrere Platzhalter und ihre Ersatzwerte in meine Funktion übergeben und die erhalten würdestr_replace("[{\}]", 'replace_with', $email_body) um alle platzhalter zu verarbeiten gebe ich es und ersetze es durch entsprechende werte.

Da ich die Funktion an mehreren Stellen verwenden und das Duplizieren von Code vermeiden möchte, kann es sein, dass ich in einigen Skripten die Platzhalter der Funktion 5 und deren Werte übergebe und in einem anderen Skript 10 Platzhalter und deren Werte an die Funktion übergeben muss, die in der E-Mail-Vorlage verwendet werden soll.

Ich bin nicht sicher, ob ich ein Array in den Skripten verwenden muss, das die Funktion und a verwendetfor loop in der funktion vielleicht, um meine php funktion dazu zu bringen, xx platzhalter und xx werte aus einem script zu übernehmen und die platzhalter zu durchlaufen und durch ihre werte zu ersetzen.

Hier ist meine Funktion, auf die ich mich oben bezogen habe. Ich habe das Skript kommentiert, was möglicherweise viel einfacher zu erklären ist.

<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>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage