【问题标题】:PHP regex use same letterPHP 正则表达式使用相同的字母
【发布时间】:2023-04-02 09:25:02
【问题描述】:

我正在尝试做一个正则表达式,我可以在其中找到所有 html 标签,但对于每个标签,每个开始和结束标签都必须相同。这是我的意思:(是的,我只想要最多 3 个字母)

preg_match_all("/\<[a-z]{1,3}\>(.*?)\<\/[a-z]{1,3}\>/", $string, $matches);

2 [a-z]{1,3} 在哪里,我希望它们相同,所以它不匹配 &lt;b&gt;&lt;\i&gt; 等。谢谢...如果您需要进一步解释,请告诉我

【问题讨论】:

    标签: php regex tags


    【解决方案1】:

    【讨论】:

    • 我并没有真正解析 HTML,它只是最接近的例子和最简单的解释来展示我想要做什么..
    • 所以你在解析 XML? :P 抱歉,每当我看到 regex 和 HTML 时,我都会笑。
    • 解析 HTML/XML 或检查特定的结束标记都没有关系。 HTML 和 Regex 就像汽油和牛奶一样。即,不推荐。 :)
    • @David:如果它非常 HTML,你能不能只使用*ML解析器?
    【解决方案2】:

    由于嵌套元素的问题,您真的不应该使用正则表达式解析 *ml,但如果这有帮助的话:

    preg_match_all("/<([a-z]{1,3})>(.*?)<\/\1>/", $string, $matches);
    

    【讨论】:

    • 请注意,这不会处理包含在同一类型标签中的标签。例如,给定&lt;foo&gt;&lt;foo&gt;&lt;/foo&gt;&lt;/foo&gt;,它将匹配&lt;foo&gt;&lt;foo&gt;&lt;/foo&gt;
    【解决方案3】:

    正如 Vivin Paliath 所说,您可以尝试将 PHP5 的 DomDocument 与 XPath 一起使用

    http://php.net/manual/en/class.domdocument.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2023-03-30
      • 2015-03-21
      • 2014-06-01
      • 2011-05-19
      相关资源
      最近更新 更多