#php #email #html-email #email-client
#php #Адрес электронной почты #html-электронная почта #email-клиент
Вопрос:
Я создал пользовательский шаблон электронной почты. И присвоил некоторые переменные с {#paid_amount}
помощью и так далее.
Все переменные заменяются, но paid_amount
не так, как ожидалось. Я заменил что-то вроде этого:
// Text file with HTML markups
$template = file_get_contents($template_url);
$paid_amount = '$1.00';
$pattern = array(
'/{#user_name}/i',
'/{#paid_amount}/i',
'/{#duration}/i' );
$replacement = array(
$user_name,
$paid_amount,
$duration );
$new_template = preg_replace($pattern, $replacement, $template);
Он печатает сумму .00
в электронном письме, и если я удалю знак $
из суммы, он напечатает 1.00
. Я протестировал его в Gmail. Кто-нибудь сталкивался с этим раньше?
Даже я пытался, amp;dollar;
но не работает. Может кто-нибудь, пожалуйста, скажите мне, что я пропустил или почему это не работает?
Ответ №1:
Вам нужно экранировать знак доллара:
$paid_amount = '$1.00';
Это связано preg_replace()
с использованием параметра $
in replace для обращения к содержимому группы захвата.
Пример:
$string = ">> hello <<";
$pattern = "/>> ([^ ]*) <</";
echo preg_replace($pattern, '$1', $string);
В приведенном выше примере $1
обращается к содержимому первой группы захвата: ([^ ]*)
-> «привет».
Комментарии:
1. Его трудно объяснить (моими) словами, но легко на примере .. 🙂