在PHP中自定义HTML标签


Custom HTML Tags in PHP

当我在玩Joomla!源代码,我看到这样的代码(或类似于这个,我不太确定,因为它是一段时间以前):

<juc:place name="module" some-other-attributes/>

我不是说它和上面的一模一样,但是当我看到Asp时,我真的很惊讶。类。net自定义标签:

<asp:Label ID="lblLabel" runat="server"/>

我现在想知道如何在PHP中完成相同的事情或类似的事情,就像他们在Asp.NET中所做的那样。有什么框架库之类的吗?

我需要写一个解析器,解析我的php代码和搜索这样的标签,并取代他们与什么是相应的像Asp。NET用<span/>替换<asp:Label/>

我的个人偏好:

我喜欢Asp。NET通过将代码隐藏与设计视图或html与c#代码分离来实现。使用asp.net的服务器端控件使开发人员能够轻松地从代码后访问html控件。这听起来像是关注点的分离,我想知道是否有任何项目或方法已经做了同样的事情?

如果您使用一种方法,将表示层与执行逻辑分开存储(例如,模板引擎),那么创建解析器查找HTML中的特定代码并用其他内容替换它是非常容易的。你可以创造自己的"SMARTY"语言。

然而,如果你的代码只是"可执行的PHP",没有层分离,你不能做这样的替换(因为它是由PHP脚本引擎直接执行的)。这里的"executable php"是这样的:

<html>
  <head>
  ...
  </head>
  <body>
  <?php echo "Hello world"?>
  </body>
 </html>

或者,您可以使用MVC框架(Zend框架,Codeigniter或类似的),它为您做了大量的关注点分离。

正如建议的那样,SMARTY是一个模板引擎,它几乎可以完成您所需要的功能,但这实际上只是拼图的一部分。抽象数据访问层也是一个好主意。

你也可以在你的服务器配置上启用短标签,然后你甚至可以整理你的演示代码,像…

<html>
    <head>
    ...
    </head>
    <body>
        <?= "Hello, world!" ?>
    </body>
</html>

你可以试试SimpleHTMLDOM。然后,您可以运行如下命令:

$html = new simple_html_dom();
$html->load_file(fileToParse.html');
foreach($html->find('tagToFind') as $element){
    $element->tag='span';
}

应该可以。

你可能想看看为cms创建自定义html标签