Заменить несколько заполнителей на PHP?

У меня есть функция, которая отправляет электронные письма с сайта (используя phpmailer), и я хочу, чтобы в основном php заменил все плашхолдеры в файле email.tpl содержимым, которое я передаю. Проблема для меня в том, что я не хочу повторять код, поэтому я и создал функцию (ниже).

Без функции PHP я бы сделал следующее в скрипте

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

Теперь я знаю, как сделать все остальное, но я застрял наstr_replace(), как показано выше, у меня есть несколькоstr_replace() функции для замены заполнителей в шаблоне электронной почты. Я хотел бы добавитьstr_replace() к моей функции (ниже) и заставить его найти все экземпляры[\] в шаблоне электронной почты я даю его и заменяю его значениями заполнителей, которые я дам ему так:str_replace("[\]", 'replace_with', $email_body)

Проблема в том, что я не знаю, как передать несколько заполнителей и их замещающие значения в свою функцию и получитьstr_replace("[{\}]", 'replace_with', $email_body) для обработки всех заполнителей я даю его и заменяю его соответствующими значениями.

Поскольку я хочу использовать функцию в нескольких местах и избежать дублирования кода, в некоторых сценариях я могу передать функции 5 заполнителей и их значениям, а другому сценарию может потребоваться передать 10 заполнителей и их значений в функцию для использования в шаблоне электронной почты.

Я не уверен, что мне понадобится использовать массив скриптов, которые будут использовать функцию иfor зацикливание в функции, возможно, чтобы моя php-функция принимала заполнители xx и значения xx из скрипта, а также проходила через заполнители и заменяла их значениями там.

Вот моя функция, о которой я говорил выше. Я прокомментировал сценарий, который может объяснить гораздо проще.

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

Ответы на вопрос(0)

Ваш ответ на вопрос