简单的PHP模板解析

2023-12-21

我想创建一个简单的 PHP 类,用于在 PHP 中解析基本的 HTML 电子邮件模板。非常基本...将 PHP 数组传递到一个函数中,该函数有一个包含带有占位符的电子邮件模板 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> 

在上面的示例中,有 2 个变量需要填充。{{username}} and {{password}}

我希望能够简单地向我的类函数传递一个 PHP 数组,其中数组键是变量名,值是将在我的电子邮件模板中填充的值。

因此,类似的东西将被传递到我解析电子邮件模板的方法/函数中......

$emailValues = array(
    'username' => 'My username value here',
    'password' => 'My password value here'
);

$emailHtml = new EmailParser($emailValues);


echo $emailHtml;  

看起来会像这样...

<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> 

我很好奇我怎样才能最好地实现这一目标?我的主要问题是如何传入 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;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单的PHP模板解析 的相关文章

  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • Smarty输出空白页

    已解决 模板文件错误 我有这样的 Smarty 设置 require once smarty Smarty class php smarty new Smarty smarty gt compile dir compile dir smar
  • 在值中包含换行符

    我有一个 Word 模板 其中 php 代码中定义了值 在PHP代码中 document gt setValue Value1 value1 在word模板中 Value1 如何将包含两个值之间的断线的值包含在单词的值中 Replace n
  • Yii2 异常:ApcCache 需要加载 PHP apc 扩展

    在高级模板前端的主配置中配置缓存组件时 我收到异常 在我的 php ini 上启用了扩展 rsults 如何解决此问题 前端 config main php cache gt class gt yii caching ApcCache ke
  • 在字符串中间添加一个字符

    可能有一个简单的解决方案可以解决这个问题 但会引起面部表情 我将时间存储为 4 个字符长的字符串 即 1300 我试图将该字符串显示为 13 00 我觉得必须有一个比我现在正在做的更优雅的解决方案 我目前有 startTime get fi
  • 在 Symfony 序列化中更改序列化属性名称

    我正在使用 Symfony 序列化器 效果很好 use Symfony Component Serializer Annotation Groups Groups default notification public function g
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • Magento - 检查 cms 页面

    我想通过 php 检查页面是否是 Magento 中的 cms page 我需要不同的 cms 页面面包屑 所以我尝试在一个条件下做到这一点 但我不知道如何或在哪里查看 到目前为止 这是我的 breadcrumbs phtml p some
  • 语法错误,第 288 行出现意外的“endif”(T_ENDIF)[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我一直在离线处理我的 WordPress 网站的此代码错误 解析错误 语法错误 homez 541 photoher marie
  • apache_request_headers() 与 $_SERVER

    据我所知 apache request headers 提供与以下相同的信息 SERVER 但按键略有不同 为什么有人应该使用apache request headers 而不仅仅是从那里获取这些信息 SERVER 我在 Centos 上使
  • 使用 PHP 的 MySQL 连接字符串

    我正在尝试通过本地计算机连接到托管在我的服务器上的数据库 我的服务器有cPanel 11 它是一个典型的共享服务器 由CentOS提供支持 安装了PHP和MySQL 准确地说 我在同一台服务器上持有经销商帐户 我想在不同帐户或域之间访问数据
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 如何在 OS X 上使用 OpenSSL 1.0.1 编译 PHP 5.5.19

    我已经安装了 OpenSSL 1 0 1j usr local ssl现在我尝试使用此版本的 OpenSSL 编译 PHP 5 5 19 这是我的配置过程 export CFLAGS arch x86 64 export CXXFLAGS
  • WordPress 插件中的类自动加载器

    我想编写一个类自动加载器以在 WordPress 插件中使用 该插件将安装在多个站点上 我想尽量减少与其他插件发生冲突的机会 自动加载器将是这样的 function autoload name some code here 我的主要问题是
  • 检查条件并通过 Zend 中的 Regex 识别 url 中的模式

    我正在实现 Zend Regex 路由 并且必须对 url 执行多次检查 例如 如果这是我的网址 http localhost application public index php module controller action 这是
  • URL 中的 %2F 中断并且未引用所需的 .php 文件 [重复]

    这个问题在这里已经有答案了 我需要将 作为变量作为 URL 的一部分传递 我的结构如下所示 www domain com listings page 1 city Burnaby South type Townhome bedroom 2
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio
  • 使用 php-ews(Exchange Web 服务)在特定日期后获取电子邮件

    在我的 PHP 脚本中 我需要弄清楚如何检索指定消息 ID 之后或特定日期之后的所有电子邮件 两者都可以 我只需要检索自上次抓取收件箱以来的新电子邮件 这个收件箱每天收到数千封电子邮件 而且我在 30 天内无法删除任何电子邮件 对于初始导入
  • 一种无需 JavaScript 即可在 PHP 中确定浏览器宽度的方法?

    首先有吗 或者我必须使用javascript 我希望能够更改使用的 CSS 因此 frex 我可以为移动设备或其他设备加载较小的字体 不幸的是 仅使用 PHP 无法检测用户分辨率 如果您使用 Javascript 则可以在 cookie 中

随机推荐

  • 如何使 jQuery UI 滑块捕捉到预定义值?

    我在 jQuery UI 中有一个滑块 其中有一些用户可以选择的预定义值 然而 现在 它只是从 1 到 60 而不是使用我的值 我有以下号码 1 3 5 15 30 60 这是我的代码 document ready function var
  • ListenAndServeTLS 在本地运行 - x509:由 docker 中的未知机构签名的证书

    我在用mkcert https github com FiloSottile mkcert生成自签名证书和授权 当我在本地使用这些文件时ListenAndServeTLS 我可以成功连接cURL 我的主机操作系统是 MacOS 但是 当尝试
  • PHP 中的正则表达式帮助(8 个十六进制字符后跟下划线)

    我想验证我的输入是否以 8 个十六进制字符开头 后跟下划线 后跟任意数量的具有任意值的字符 我目前使用以下正则表达式 preg match 0 9A Fa f 8 value 但这个表达式不能满足我的需求 因为它的行为如下 Result 1
  • 在 Mac OS X Lion 上启用 Xdebug

    我一直在尝试为 Mac OS X Lion 启用 Xdebug 但无法使其工作 这应该是非常简单的 但它对我来说不起作用 这些是我采取的步骤 1 取消注释 php ini 文件的这一行 zend extension usr lib php
  • 在 Airflow 2.0 中运行多个 Athena 查询

    我正在尝试创建一个 DAG 其中一项任务执行athena查询使用boto3 它适用于一个查询 但是当我尝试运行多个 athena 查询时 我遇到了问题 这个问题可以通过以下方式解决 如果一个人经过this https www ilkkape
  • gcc 用于解析代码

    我想知道如何使用 GCC 作为库来解析我的程序的 C C Java Objective C Ada 代码 我想绕过预处理并为用户编写的所有函数添加前缀 My 像这样Print 变成MyPrint 我也希望用变量来做到这一点 你可以看这里 h
  • 如何使用 GraphicsMagick Nodejs 将一种颜色替换为另一种颜色

    我有一张黑色背景的图像 我想将其更改为白色背景 在 Nodejs 中使用 GraphicsMagick 可以实现吗 我试过gm test png fill white 但这对我不起作用 我做了一些搜索 发现有一个转换命令 但不确定是否有等效
  • 使用 JavaScript 对象更改 element.style

    首先 这个问题有很多重复 但这些答案并没有给出更深入的见解 Q1 为什么结果是 200 0 考虑这个片段 var el document querySelector r console log First el offsetHeight e
  • 使用 python API 将视频上传到 Youtube 并将其设置为不公开

    我正在使用python 客户端库 http code google com p gdata python client 将视频上传到 youtube 我需要将其隐私设置为不公开 但是API page http code google com
  • 发送 JSON 数组 RETROFIT 2 (Android)

    我是新手 知道这个问题有很多帖子 但我找不到答案 因此 我需要使用 Retrofit2 和请求 PATCH 来升级用户及其议程 但是 我不知道如何使用 Retrofit2 做到这一点 即使我的研究 没有任何作用 你能帮我吗 谢谢提前 D 这
  • 以编程方式创建饼图[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如何以编程方式从 java 生成饼图 我有一些由程序处理的数据 然后我想创建一个包含饼图的图像文件 P
  • 超时已过期。从池中获取连接之前超时时间已过。 。例外

    出现异常 超时已过 从池中获取连接之前超时时间已过 发生这种情况的原因可能是所有池连接都在使用中并且已达到最大池大小 code HotelDealsDataClassesDataContext hotelDealsDataContext D
  • 如何添加多个悬停工具而不在工具栏中显示多个图标?

    遵循示例here https github com bokeh bokeh blob 16e87ed63ca1aecaa42e93293f32d936685dcd3e sphinx source docs user guide exampl
  • 如何在 Flutter/Dart 中请求短信权限?

    我在用着权限处理程序 https pub dev packages permission handler请求视频和音频 但我无法让它请求发送短信的权限 我不知道这是否是我手机设置 我手机 摩托罗拉 Moto X4 XT1900 1 我手机操
  • 在 Ruby 中列出 attr_accessor 的最快/单行方法?

    列出定义的所有方法的最短的单行方法是什么attr accessor 如果我有课的话我想做到这一点MyBaseClass 任何扩展它的东西 我都可以得到attr accessor是在子类中定义的 像这样的事情 class MyBaseClas
  • 在 Grails 中翻译 HTML 选择元素

    认为这会更容易 想象一下
  • 插入/拔出耳机时 SKAudioNode() 崩溃

    我正在使用一个SKAudioNode 在我的游戏中播放背景音乐 我有播放 暂停功能 在插入耳机之前一切正常 根本没有声音 当我调用暂停 播放函数时 出现此错误 AVAudioPlayerNode mm 333 开始 所需条件为假 engin
  • Xcode:无法获取进程的任务

    我已经在使用 Xcode 4 的 iPhone 上以发布模式运行了我的应用程序 一切都很顺利 直到我切换到模拟器并切换回 iPhone 切换回来后 该应用程序在 iPhone 上启动 但主屏幕立即显示 在 Xcode 中我得到 failed
  • objectid 的 mongodb 部分最有可能是唯一的

    在我的应用程序中 我让 mongo 通过其 ObjectId 方法生成订单 id 但在用户测试中 我们担心订单 ID 会让人感到 恐吓 即如果您需要通过电话与某人讨论您的订单 那么读出 24 个字母数字字符有点乏味 同时 我真的不想存储两个
  • 简单的PHP模板解析

    我想创建一个简单的 PHP 类 用于在 PHP 中解析基本的 HTML 电子邮件模板 非常基本 将 PHP 数组传递到一个函数中 该函数有一个包含带有占位符的电子邮件模板 HTML 的变量 var name PHP 数组的键将是模板中的变量