Знак доллара ($) не работает в шаблоне электронной почты

#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. Его трудно объяснить (моими) словами, но легко на примере .. 🙂