Substituir vários espaços reservados por PHP?
Eu tenho uma função que envia e-mails do site (usando phpmailer), o que eu quero fazer é basicamente para php para substituir todos os placheholders no arquivo email.tpl com o conteúdo que eu alimento. O problema para mim é que eu não quero repetir o código, por isso criei uma função (abaixo).
Sem uma função PHP eu faria o seguinte em um 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>
Agora eu sei fazer o resto, mas estou preso nostr_replace()
, como mostrado acima, eu tenho váriosstr_replace()
funções para substituir os marcadores de posição no modelo de email. O que eu gostaria é de adicionar ostr_replace()
para minha função (abaixo) e obtê-lo para encontrar todas as instâncias de[\]
no modelo de e-mail eu dou a ele e o substituo pelos valores placeholders que eu darei assim:str_replace("[\]", 'replace_with', $email_body)
O problema é que eu não sei como eu passaria vários marcadores e seus valores de substituição em minha função e obteria ostr_replace("[{\}]", 'replace_with', $email_body)
para processar todos os espaços reservados que eu forneço e substituo por valores correspondentes.
Porque eu quero usar a função em vários lugares e para evitar a duplicação de código, em alguns scripts eu posso passar os espaços reservados da função 5 e seus valores e outro script pode precisar passar 10 espaços reservados e valores para a função a ser usada no modelo de email.
Não tenho certeza se precisarei usar um array no (s) script (s) que usarão a função e umfor
loop na função talvez para obter a minha função php para tomar xx placeholders e valores xx de um script e percorrer os espaços reservados e substituí-los por valores.
Aqui está a minha função que me referi acima. Eu comentei o script que pode explicar muito mais 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>