【问题标题】:Regex for html attributes in phpphp中html属性的正则表达式
【发布时间】:2010-11-25 16:30:17
【问题描述】:

我正在尝试在 php.ini 中解析一串 HTML 标签属性。可能有3种情况:

attribute="value"  //inside the quotes there can be everything also other escaped quotes
attribute          //without the value
attribute=value    //without quotes so there are only alphanumeric characters

有人可以帮我找到一个正则表达式,它可以在第一个匹配属性名称和第二个匹配属性值(如果存在的话)?

【问题讨论】:

  • 你为什么要用正则表达式来做这个?真正的 HTML 解析器是一种更简单的方法。
  • 因为我正在构建自己的库,我无法从另一个库中获取代码
  • 因为我想这样做
  • 您的意思是要我们告诉您如何使用玻璃瓶捶指甲? weblogs.asp.net/alex_papadimoulis/archive/2005/05/25/…
  • @mck89:请不要感到受到攻击,这不是我的本意。只是您正在困难的方式经历。无意冒犯您,只是想知道为什么您既不能使用现有代码也不能使用 html 解析器。

标签: php html regex php4


【解决方案1】:

Never ever use regular expressions for processing html尤其是如果你正在编写一个库并且不知道你的输入会是什么样子。以simplexml 为例。

【讨论】:

    【解决方案2】:

    试一试,看看它是否是您要从标签中提取的内容。

    preg_match_all('/( \\w{1,}="\\w{1,}"| \\w{1,}=\\w{1,}| \\w{1,})/i', 
        $content, 
        $result, 
        PREG_PATTERN_ORDER);
    $result = $result[0];
    

    正则表达式提取每个属性,排除标签名称,并将结果放入数组中,这样您就可以遍历第一个和第二个属性。

    【讨论】:

    • 我找到了一个更快、更精确的解决方案,但我尝试了你的正则表达式,它似乎有效,所以这是一个很好的起点,我将你的答案作为解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多