解析CFML标签在PHP

解析CFML标签在PHP

问题描述:

背景解析CFML标签在PHP

我一直在运行的博客平台上a site在过去的5年。我正在使用在我自己的服务器上托管网站的选项,通过FTP发布。我的服务器正在运行ColdFusion,所以我决定利用它。我创建了Coldfusion自定义标签,它提供了额外的功能,并包含许多可能的帖子 - 要清楚,我的帖子的正文。谷歌决定关闭此FTP发布选项的访问权限。我以这个消息为借口转向WordPress。现在我必须弄清楚我的帖子中的所有ColdFusion标签该怎么做。

问题

我想不松通过我已经嵌入到我的职位,自定义标记提供的功能。我的主要问题是使用自定义标签向PHP网站添加功能的最佳方式是什么?我最初的计划是尝试解析页面以找到标记,然后编写一个PHP类来基本模仿Coldfusion文件提供的功能。我对PHP不太了解,所以我不确定有哪些工具或库可以帮助实现。或者,如果这只是一个愚蠢的想法。这些不是格式良好的XML文件,所以我需要一些相当强大的功能。

我使用以下标记:

<cf_taglinks>Tag1, Tag2, Tag3</cf_taglinks> 

以产生一系列链接到Technorati的或任何我决定(因此具有定制标记的益处<a..>Tag#</a>元件 - 很容易改变行为)。对于这个问题的解决可能真的能够处理任何联系,所以如果我有一个<*Link post="3944091"/>标签,我应该可以翻译成

<a href="http://*.com/posts/3944091/" 
    target="_blank">* Question: 3944091</a> 

现在我倾向于在Custom Tagsmentioned in this post作为回答。最好的一个特点是如下面的代码块掩埋或嵌套标签的支持:

<ct:upper type="all"> 
    This text is transformed by the custom tag.<br /> 
    Using the default example all the characters should be made into uppercase characters.<br /> 
    Try changing the type attribute to 'ucwords' or 'ucfirst'.<br /> 
    <br /> 
    <ct:lower> 
     <strong>ct:lower</strong><br /> 
     THIS IS LOWERCASE TEXT TRANSFORMED BY THE ct:lower CUSTOM TAG even though it's inside the ct:upper tag.<br /> 
     <BR /> 
    </ct:lower> 
</ct:upper> 

我强烈建议下载zip文件,并通过它包含的例子看。

+0

这是什么时候[我正在寻找一个类似的系统](http://*.com/questions/3723752/where-do-i-start-when-writing-a-new-scripting-language)? – EAMann 2010-10-15 22:12:43

+0

因为我使用的是WordPress,所以我决定尝试使用短代码(http://codex.wordpress.org/Shortcode_API),因为它已经内置了功能。我无法解析短代码的问题但是正在做一个3部分的代码,比如[if] [else] [endif]。 – Snekse 2011-12-05 22:44:52

+0

我会*强烈*推荐*针对*使用简码创建自定义标记的原因在这里概述:http://justintadlock.com/archives/2011/05/02/dealing-with-shortcode-madness – EAMann 2011-12-05 22:53:19