我想创建一个简单的PHP类来解析PHP中的基本HTML电子邮件模板。非常基本...将PHP数组传递到一个函数中,该函数具有一个包含带有占位符的Email template HTML的变量{{var_name}}。PHP数组的键将是模板中的变量名称,并且当电子邮件HTML作为电子邮件发送时,它的值将是所需的输出。
我认为创建一个简单的PHP类对我可能很有用,该类可以执行相同的操作并通过灵活地加快操作速度。
因此,这是一些用于电子邮件正文的基本HTML示例。...需要在模板中用PHP变量中的值替换的变量被包装为 {{var_name}}
<html>
<body>
<h1>Account Details</h1>
<p>Thank you for registering on our site, your account details are as follows:<br>
Username: {{username}}<br>
Password: {{password}} </p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,需要填充2个变量。 {{username}}和{{password}}
我希望能够简单地将Class函数传递给PHP Array,其中Array键是变量名,值是将在我的电子邮件模板中填充的值。
因此,类似这样的内容将传递到我解析电子邮件模板的方法/函数中。
$emailValues = array(
'username' => 'My username value here',
'password' => 'My password value here'
);
$emailHtml = new EmailParser($emailValues);
echo $emailHtml;
Run Code Online (Sandbox Code Playgroud)
看起来像这样...
<html>
<body>
<h1>Account Details</h1>
<p>Thank you for registering on our site, your account details are as follows:<br>
Username: My username value here<br>
Password: My password value here </p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我很好奇如何才能最好地做到这一点?我的主要问题是如何传递PHP数组并将其映射到变量名称以进行替换。PHP数组键将是模板中的变量名称。
只是循环遍历这些值并在其上使用str_replace的情况。
这是一个例子:
<?php
$emailValues = array(
'username' => 'My username value here',
'password' => 'My password value here'
);
$emailHtml = new EmailParser($emailValues);
echo $emailHtml->output();
class EmailParser {
protected $_openingTag = '{{';
protected $_closingTag = '}}';
protected $_emailValues;
protected $_emailHtml = <<<HTML
<html>
<body>
<h1>Account Details</h1>
<p>Thank you for registering on our site, your account details are as follows:<br>
Username: {{username}}<br>
Password: {{password}} </p>
</body>
</html>
HTML;
public function __construct($emailValues) {
$this->_emailValues = $emailValues;
}
public function output() {
$html = $this->_emailHtml;
foreach ($this->_emailValues as $key => $value) {
$html = str_replace($this->_openingTag . $key . $this->_closingTag, $value, $html);
}
return $html;
}
}
Run Code Online (Sandbox Code Playgroud)