Заменить несколько заполнителей на 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>