Php 查找HTML中出现的自定义标记,执行函数并用函数输出替换标记

Php 查找HTML中出现的自定义标记,执行函数并用函数输出替换标记,php,regex,templates,content-management-system,Php,Regex,Templates,Content Management System,这可能是一个非常简单的问题,因此为没有更具挑战性而道歉 我正在开发一个使用模板系统的内部CMS 为了使CMS尽可能可扩展,我想使用“模块”。因此,在模板文件中,我想放置表示模块的自定义HTML标记 这将看起来像: 我通过以下方式获取模板文件: ob_start(); include "templatefile.tpl"; $buffer= ob_get_contents(); ob_end_clean(); 现在我想浏览一下$buffer的内容,对于的每一次出现,我想包括“moduleNam

这可能是一个非常简单的问题,因此为没有更具挑战性而道歉

我正在开发一个使用模板系统的内部CMS

为了使CMS尽可能可扩展,我想使用“模块”。因此,在模板文件中,我想放置表示模块的自定义HTML标记

这将看起来像:

我通过以下方式获取模板文件:

ob_start();
include "templatefile.tpl";
$buffer= ob_get_contents();
ob_end_clean();
现在我想浏览一下
$buffer
的内容,对于
的每一次出现,我想
包括“moduleName.class.php”
,创建该类的一个新实例,运行该模块的
getOutput()
函数,并将返回值放在该
标记以前所在的位置

我不知道该怎么办…:/有什么想法吗

如果你不懂,想想看新闻报。我可能会编写一些代码,查看数据库中的新闻表,列出10条最新新闻,然后将其输出到html
。我想把它抽象出来,这样就可以在很多页面上使用。因此,在我的主页模板中,我可能有标签
。现在,当我访问主页时,我需要查看主页tpl文件,我会发现它在哪里显示
,我将提取
name
属性,并基于该名称包含一个类(在本例中,它将是
newsTicker.class.php
)。这将有一个名为
getOutput()
的函数,因此我将能够实现类似的功能:
$output=$current\u module->getOutput()
然后我需要返回到我的tpl文件并更改原始的
$output
的内容

谢谢你的帮助。:)

汤姆

  • 使用DOMDocument查找
    模块
    元素(我个人只会使用小写)
  • 存储
    name
    属性
  • 包含一次
    基于
    名称
    属性的类(如果使用自动加载,则跳过)
  • 使用
    $class=new$name
  • 删除
    $class->getOutput()
    的原始
    模块
    DOM元素和
    appendChild

这看起来不错,但如果这些模板文件不是完整的HTML文件,它会起作用吗?例如,我要处理的文件可能只是一个页面中的一块内容,而不是一个完整的HTML文档。@Thomas是的,它应该可以工作,但是当您
$dom->saveHTML()
时,您可能需要仅从
正文
元素中提取。