首页 PHP 库 其它类库 php模版解析类
php模版解析类
<?php
class Parser
{
  private $_tpl;
  public function __construct($_tplFile)
  {
    if (! $this->_tpl = file_get_contents($_tplFile)) {
      exit('ERROR:模版文件读取错误');
    }
  }
  private function parvar()
  {
    $_patten = '/<!--\s+\{$([\w]+)\}\s+-->/';
    if (preg_match($_patten,$this->_tpl)) {
      $this->_tpl = preg_replace($_patten, "<?php echo $this->_vars[''];?>",$this->_tpl);
    }
  }
  private function parif(){
    $_pattenif = '/<!--\s+\{if\s+$([\w]+)\}\s+-->/';
    $_pattenElse = '/<!--\s+\{else\}\s+-->/';
    $_pattenEndif = '/<!--\s+\{\/if\}\s+-->/';
    if (preg_match($_pattenif,$this->_tpl)) {
      if (preg_match($_pattenEndif,$this->_tpl)) {
        $this->_tpl = preg_replace($_pattenif,"<?php if ($this->_vars['']){?>",$this->_tpl);
        $this->_tpl = preg_replace($_pattenEndif,"<?php } ?>",$this->_tpl);
        if (preg_match($_pattenElse,$this->_tpl)) {
          $this->_tpl = preg_replace($_pattenElse,"<?php }else{?>",$this->_tpl);
        }
      }else{
        echo 'ERROR:IF语句没有关闭!';
      }
    }
  }

接收模版文件内容后,构造方法,获取模版文件内容解析后用普通变量解析IF语句,之后解析模版文件生成编译文件。

免责声明

本站所有资源均由网友贡献或各大下载网站转载。请自行检查软件的完整性!本站所有资源仅供学习参考。请不要将它们用于商业目的。否则,一切后果由您负责!如有侵权,请联系我们删除。联系方式:admin@php.cn

相关文章

了解php错误类型并解析处理 了解php错误类型并解析处理

11 Apr 2023

PHP所有错误PHP 是一种非常受欢迎的服务器端脚本语言,用于开发动态的互联网应用程序。在 PHP 中,错误分为三大类:致命错误、警告和提示。对于 PHP 开发人员来说,了解所有错误类型和如何处理它们是非常重要的。1. 致命错误致命错误是最严重的 PHP 错误类型之一,当 PHP 脚本执行发生致命错误时,代码将会停止执行并返回一个致命错误的消息。不处理该错误会导致脚本彻底崩溃。

详解PHP封装的一个单例模式Mysql操作类 详解PHP封装的一个单例模式Mysql操作类

08 Jun 2018

PHP封装的一个单例模式Mysql操作类在php中有着重要的作用,本文将详细的讲解其相关知识。

如何使用自连接从自引用表中检索数据? 如何使用自连接从自引用表中检索数据?

13 Jan 2025

了解 SELF JOIN 及其应用程序在数据库管理领域中,SELF JOIN 是一种特殊类型的联接操作,它允许...

如何解析 PHP 类声明中的基本语法? 如何解析 PHP 类声明中的基本语法?

20 Oct 2024

未解析基本语法的解决方法在 PHP 中解析时,可能会出现与基本语法的差异。具体来说,将复杂表达式指定为类属性的默认值可能会出现问题。虽然 (1

Oracle 数据库现在支持布尔数据类型吗? Oracle 数据库现在支持布尔数据类型吗?

12 Jan 2025

Oracle 数据库中布尔数据类型的可用性与其他 RDBMS(例如提供 BIT 数据类型的 Microsoft SQL Server)不同,Oracle 数据库...

在 Joomla 中连接第三方 PHP 库 在 Joomla 中连接第三方 PHP 库

28 Dec 2024

PHP 库很方便,因为可以从应用程序中的任何位置访问它们:从插件、组件模型、模块等。如果有人已经解决了类似的问题并将其设计为库(甚至更新了它),那就有意义了

See all articles