【问题标题】:Parsing og: tags with ColdFusion regex解析 og:带有 ColdFusion 正则表达式的标签
【发布时间】:2014-10-09 07:02:11
【问题描述】:

如果想从 html 中提取/匹配 Open Graph (og:) 标签,使用正则表达式(和 ColdFusion 9+),该怎么做?

棘手的一点是,它必须涵盖标签形成的两种可能变化,如下例所示:

<meta property="og:type" content="website" /> 
<meta content="website" property="og:type"/> 

到目前为止,我得到的只是这个:

<cfset tags = ReMatch('(og:)(.*?)>',html_content)>

它确实匹配两个链接,但是只有第一个类型具有返回的内容位。内容是我需要的。

为了明确起见,所需的输出应该是一个包含所有 OG 标签的数组(它们可以是“类型、图像、作者、描述等)。这意味着它应该是灵活的,而不是仅仅基于 og:type 示例。

当然,如果可能的话,理想的输出应该是一个结构,第一列是标签的名称,第二列包含值(内容)。但这可以通过后处理来实现,并不像提取标签本身那么重要。

干杯, 西蒙

【问题讨论】:

    标签: regex coldfusion


    【解决方案1】:

    所以你想要一个像 ['og:author','og:type', 'og:image'...] 这样的数组?

    尝试使用像 og:([\w]+)

    这样的正则表达式

    这应该给你一个开始。如果您有两个相同的 og:foo 元标记,您将有重复。

    您也可以查看 JSoup 以帮助您解析 HTML。它使它变得容易得多。

    有一些关于在 CFML 中使用它的好博客文章

    jQuery-like parsing in Java

    Parsing, Traversing, And Mutating HTML With ColdFusion And jSoup

    【讨论】:

    • 嘿,我不想要一个像 ['',' '...] 或者,有一个像 {'type':'website','description':'this is a description' 这样的结构会更好。 .} 感谢您的链接,将检查出来
    【解决方案2】:

    好的,根据@abbottmw 的建议(非常感谢!),解决方案如下:

    从这里下载 Jsoup jar 文件:http://jsoup.org/download

    然后像这样启动它:

    <cfhttp url="...." result="oghtml" > /*to get your html content*/
    <cfscript>
        paths = expandPath("/lib/jsoup.jar"); //or wherever you decide to place the file
        loaderObj =createObject("component","javaloader.JavaLoader").init([expandPath('/lib/jsoup.jar')]);
        jsoup = loaderObj.create("org.jsoup.Jsoup");
        doc = jsoup.parse(oghtml);
        tags = doc.select("meta[property*=og:]"); 
    </cfscript>
    <cfloop index="e" array="#tags#">
        <cfoutput>
            #e.attr("property")# | #e.attr("content")#<br />
        </cfoutput>
    </cfloop>
    

    就是这样。 og标签的完整列表在[tags]数组中。

    当然不是最初要求的正则表达式解决方案,但是嘿,它有效!

    【讨论】:

    • “你不需要任何臭名昭著的正则表达式”! ;-) 说真的,他们没有错,但正如@abbottmw 所说,JSoup 是解析 html 的更好工具。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    • 2014-07-26
    • 2018-01-28
    相关资源
    最近更新 更多