当我和Joomla一起玩的时候!源代码,我看到了这样的代码(或者类似于这个代码,我不太确定,因为那是很久以前的事):
<juc:place name="module" some-other-attributes/>我并不是说它与上面的完全相同,但当我看到类似ASP.NET的自定义标记时,我实际上感到惊讶:
<asp:Label ID="lblLabel" runat="server"/>我现在想知道如何像他们在Asp.NET中一样,在PHP中完成同样的事情或类似的事情。是否有这样或那样的框架库?
我是否需要编写一个解析器,解析我的php代码,搜索这样的标记,然后用相应的方法替换它们,比如Asp.NET,用<span/>替换<asp:Label/>
我的个人喜好:
我喜欢Asp.NET通过将代码隐藏与设计视图或html与c#代码分开所做的事情。通过使用ASP.NET的服务器端控件,开发人员可以轻松地从代码背后访问html控件。这听起来像是分离的关注点,我想知道是否有任何项目或方式已经做了同样的事情?
发布于 2011-11-24 05:32:33
如果使用一种方法,表示层与执行逻辑(例如模板引擎)分开存储,那么很容易创建一个解析器,它在HTML中查找特定的代码,然后用shomething替换它。你可以用自己的“聪明”语言。
但是,如果您的代码只是“可执行的PHP”,没有层分离,那么您就不能进行这样的替换(因为它是由PHP脚本引擎直接执行的)。我所说的“可执行的php”指的是这样的东西:
<html>
<head>
...
</head>
<body>
<?php echo "Hello world"?>
</body>
</html>发布于 2011-11-24 05:39:41
或者,您可以使用MVC框架(Zend、Codeigniter或类似的),它为您实现了很多关注点的分离。
正如所建议的那样,SMARTY是一个模板引擎,它可以完成您所追求的任务,但这实际上只是谜题的一部分。抽象您的数据访问层也是一个好主意。
您还可以在服务器配置上启用短标记,然后您甚至可以使用以下内容来整理演示代码.
<html>
<head>
...
</head>
<body>
<?= "Hello, world!" ?>
</body>
</html>发布于 2012-06-10 18:27:47
你可以试试SimpleHTMLDOM。然后你就可以运行类似..。
$html = new simple_html_dom();
$html->load_file(fileToParse.html');
foreach($html->find('tagToFind') as $element){
$element->tag='span';
}那应该管用。
你可能想看看为cms创建自定义html标记
https://stackoverflow.com/questions/8252588
复制相似问题