Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
发送前,PHP替换html电子邮件变量中的令牌_Php_Token - Fatal编程技术网

发送前,PHP替换html电子邮件变量中的令牌

发送前,PHP替换html电子邮件变量中的令牌,php,token,Php,Token,我有一封电子邮件发送给我网站的订户。我通过从我的数据库中获取订户列表,并通过数组循环,一次发送一封电子邮件来实现这一点。。。我知道有一种方法可以一次发送所有信息,但这就是我为什么这样做的原因,以及我需要帮助的地方 HTML电子邮件包含2个令牌: {name}和{date} 我需要做的是在HTML电子邮件中插入日期,替换{date}标记,并为每个电子邮件发送插入名称,替换{name}(因为名称总是不同) 这就是我所拥有的: $result = $wpdb->get_resul

我有一封电子邮件发送给我网站的订户。我通过从我的数据库中获取订户列表,并通过数组循环,一次发送一封电子邮件来实现这一点。。。我知道有一种方法可以一次发送所有信息,但这就是我为什么这样做的原因,以及我需要帮助的地方

HTML电子邮件包含2个令牌:

{name}
{date}

我需要做的是在HTML电子邮件中插入日期,替换
{date}
标记,并为每个电子邮件发送插入名称,替换
{name}
(因为名称总是不同)

这就是我所拥有的:

        $result = $wpdb->get_results( "SELECT * FROM wp_newsletter WHERE `id` IN ( $userIds )");
        for($i = 0, $size = sizeof($result); $i < $size; ++$i){
          add_filter('wp_mail_content_type',create_function('', 'return "text/html";'));
          $to .= $result[$i]->name.'<'.$result[$i]->email.'>';
          $mail = wp_mail( $to, $subject , $message, $headers);
        }
$result=$wpdb->get_results(“从wp_新闻稿中选择*,其中,$userIds中的'id');
对于($i=0,$size=sizeof($result);$i<$size;++$i){
添加过滤器('wp_邮件内容类型',创建函数('','return“text/html”);
$to.=$result[$i]->name.';
$mail=wp_mail($to、$subject、$message、$headers);
}
正如您在上面看到的,我从数据库中得到了两个变量:

$result[$i]->name

$result[$i]->电子邮件

$message
是HTML电子邮件正文,其中有两个需要替换的标记

所以。。。。对于循环和发送,一切都按预期进行。我只需要一些帮助,了解如何为
{name}
{date}
替换令牌

我们将非常感谢您的帮助

$message = str_replace('{name}',$result[$i]->name,$message);
$message = str_replace('{date}',date('Y/m/d H:i:s'),$message);


这可以通过PHP的
str_replace
函数轻松实现

请注意,如果您知道只有一个
{name}
和/或
{date}
实例,则可以将第四个参数
$count
传递给
stru replace
,并在替换第一个匹配项后退出


干杯

谢谢@zerkms,非常感谢OK@疯子。。我有一个问题,它发送的所有电子邮件中只有第一个名字的循环。有什么想法吗?当它再次循环时,我发现它有第一个名称实例,没有loger标记。无需。。我这样做:
for($I=0,$size=sizeof($result);$I<$size;++$I){$newMessage=$message;$newMessage=str_replace('{name}',$result[$I]>name,$newMessage);$newMessage=str replace('{date}',date fj,Y'),$newMessage添加过滤器('wp_-mail_-content_-type',create_-function(''return text/html')));$to.=$result[$I]->名称。“”;$mail=wp_mail($to、$subject、$newMessage、$headers);
str_replace('{name}',$result[$i]->name);
str_replace('{date}',date('Y/m/d H:i:s'));
...
$message = str_replace('{name}', $result[$i]->name, $message);
$message = str_replace('{date}', date('Y/m/d H:i:s'), $message);  // Or your preferred date format

$mail = wp_mail( $to, $subject , $message, $headers);