代码之家  ›  专栏  ›  技术社区  ›  Snekse Kevin Bourrillion

在PHP中解析cfml标记

  •  1
  • Snekse Kevin Bourrillion  · 技术社区  · 15 年前

    背景 :

    我一直在跑步 a site 在过去5年的博客平台上。我使用的是在我自己的服务器上托管该站点的选项,通过ftp发布。我的服务器正在运行ColdFusion,所以我决定利用它。我创建了ColdFusion自定义标签,它提供了额外的功能,并将这些标签包含在许多五月的帖子中——要清楚的是, 身体 我的帖子。谷歌决定关闭对这个ftp发布选项的访问。我把那个消息作为转移到WordPress的借口。现在我要想办法处理我帖子里所有的ColdFusion标签。

    问题 :

    我不想失去我在帖子中嵌入的自定义标签所提供的功能。我的主要问题是,使用自定义标记向PHP站点添加功能的最佳方法是什么?我最初的计划是尝试解析页面以找到标记,然后编写一个PHP类来基本上模拟ColdFusion文件提供的功能。我对PHP不太了解,所以我不确定有哪些工具或库可以帮助实现这一点。或者只是一个愚蠢的想法。这些不是格式良好的XML文件,因此我需要一些相当健壮的文件。

    例子 :

    我使用以下标签:

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

    生成一系列 <a..>Tag#</a> 链接到Technorati或我决定的任何内容的元素(因此具有自定义标记的好处-非常容易更改行为)。这个问题的解决方案真的可以处理任何链接,所以如果我有一个 <stackoverflowLink post="3944091"/> 标签,我应该能把它翻译成

    <a href="http://stackoverflow.com/posts/3944091/" 
         target="_blank">Stackoverflow Question: 3944091</a>
    
    1 回复  |  直到 15 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    现在我正朝着 Custom Tags 图书馆 mentioned 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文件并查看其中包含的示例。