Zastąp wiele symboli zastępczych PHP?
Mam funkcję, która wysyła e-maile z witryny (za pomocą phpmailer). Chcę tylko, aby php zastąpił wszystkie miejsca w pliku email.tpl treścią, którą go zasilam. Problemem dla mnie jest to, że nie chcę powtarzać kodu, dlatego stworzyłem funkcję (poniżej).
Bez funkcji php zrobiłbym w skrypcie następujące czynności
<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>
Teraz wiem, jak zrobić resztę, ale utknąłem nastr_replace()
, jak pokazano powyżej, mam wielestr_replace()
funkcje zastępujące symbole zastępcze w szablonie wiadomości e-mail. Chciałbym dodaćstr_replace()
do mojej funkcji (poniżej) i znajdź wszystkie instancje[\]
w szablonie e-maila podaję go i zastępuję wartościami zastępczymi, które mu podam w ten sposób:str_replace("[\]", 'replace_with', $email_body)
Problem polega na tym, że nie wiem, jak przekazałbym wiele funkcji zastępczych i ich wartości zastępczych do mojej funkcji i otrzymałemstr_replace("[{\}]", 'replace_with', $email_body)
przetwarzać wszystkie symbole zastępcze, które podaję, i zastępować je odpowiednimi wartościami.
Ponieważ chcę użyć funkcji w wielu miejscach i uniknąć duplikowania kodu, w niektórych skryptach mogę przekazać symbole zastępcze funkcji 5 i tam wartości, a inny skrypt może potrzebować przekazać 10 symboli zastępczych i tam wartości do wykorzystania w szablonie wiadomości e-mail.
Nie jestem pewien, czy będę musiał użyć tablicy na skryptach, które będą korzystać z funkcji i afor
zapętlić funkcję, być może, aby moja funkcja php wzięła xx symboli zastępczych i wartości xx ze skryptu i zapętliła symbole zastępcze i zastąpiła je tam wartościami.
Oto moja funkcja, o której wspomniałem powyżej. Skomentowałem skrypt, który może wyjaśnić znacznie łatwiej.
<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>