简单的PHP模板解析

Jas*_*vis 1 php

我想创建一个简单的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数组键将是模板中的变量名称。

rjd*_*own 5

只是循环遍历这些值并在其上使用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)