【问题标题】:PHP Regular Expressions. HTML ParsePHP 正则表达式。 HTML 解析
【发布时间】:2014-05-02 16:21:36
【问题描述】:

我正在寻找一种使用 php 查找具有特定 ID 的 html div 的方法

<?php
    $regex = "<div+[a-zA-Z0-9._-\"]+id=\"";
    $string = '<html><body><div style="rubbish" id="man"></body></html>';
    preg_match($regex, $string, $matches, PREG_OFFSET_CAPTURE);
    $var_export = $matches;
    $var = $var_export[1][1];
    echo substr($string, $var, 3);
?>

我知道现在这是一堆垃圾,但我无法完全理解正则表达式。

【问题讨论】:

  • 不要使用正则表达式解析 HTML。使用适当的 HTML 解析模块。 您无法使用正则表达式可靠地解析 HTML,并且您将面临悲伤和挫败感。一旦 HTML 与您的期望发生变化,您的代码就会被破坏。请参阅htmlparsing.com/phpthis SO thread,了解如何使用已经编写、测试和调试过的 PHP 模块正确解析 HTML。
  • 你想匹配什么,预期的结果是什么?
  • div man 没有结束标签,对吗?

标签: php regex html-parsing


【解决方案1】:

你可能想试试这个:

$html = '<html><body><div style="rubbish" id="man">something </div><div id="otherid">blabla</div></body></html>';

preg_match_all('%(<div.*?id="man">.*?</div>)%im', $html, $result, PREG_PATTERN_ORDER);
for ($i = 0; $i < count($result[1]); $i++) {
    echo $result[1][$i];
}

演示

http://ideone.com/KQv3OA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-20
    • 2014-12-06
    • 2012-09-12
    • 2014-05-16
    • 1970-01-01
    • 2014-06-08
    相关资源
    最近更新 更多