PHP中的自定义HTML标记

时间:2011-11-24 05:27:24

标签: php asp.net custom-tags

当我和Joomla一起玩的时候!源代码,我看到了诸如代码(或类似于这个,我不太确定,因为它已经有一段时间了):

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

我不是说它与上面的那个完全一样,但实际上当我看到类似Asp.NET的自定义标签时,我感到很惊讶:

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

我现在想知道如何在PHP中完成相同或类似的事情,就像在Asp.NET中一样。这个等等的框架是否有任何库?

我是否需要编写解析器来解析我的php代码并搜索此类标记,并将其替换为与Asp.NET相对应的内容,将<asp:Label/>替换为<span/>

我的个人偏好:

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

3 个答案:

答案 0 :(得分:1)

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

但是,如果您的代码只是“可执行PHP”而没有分层,则无法进行此类替换(因为它直接由PHP脚本引擎执行)。通过“可执行的PHP”我的意思是这样的:

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

答案 1 :(得分:1)

或者,你可以使用一个MVC框架(Zend Framework,Codeigniter或类似的),它可以为你做很多分离。

正如所建议的那样,SMARTY是一个模板引擎,可以完成你所追求的功能,但这只是这个难题的一部分。抽象数据访问层也是一个好主意。

您还可以在服务器配置上启用短标签,然后您甚至可以使用类似的东西整理您的演示文稿代码。

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

答案 2 :(得分:0)

您可以尝试SimpleHTMLDOM。然后你可以运行类似......

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

这应该有效。

您可能需要查看Creating custom html tags for cms