代码之家  ›  专栏  ›  技术社区  ›  Shubham

PHP中的正则表达式问题

  •  1
  • Shubham  · 技术社区  · 16 年前

    我想不出一个合适的头衔。我有一些数据-

    $data = <<<EOD
    <strong>
    HHHHH
    <strong>
    TTTTT
    <strong>
    RRRRRRR
    <strong>
    EOD;
    

    基本上上面一个只是一个例子。实际上,数据就像-

    <strong>Some Title</strong>
    DATA
    <strong>Some other Title</strong>
    OTHER DATA
    

    : http://pastebin.com/cxzZWDZ8

    preg_match_all("%<strong>(.*?)<strong>%s", $data, $all);
    

    这个匹配, HHHHH RRRRRRR 但我想匹配 TTTTT

    2 回复  |  直到 16 年前
        1
  •  5
  •   bobince    16 年前

    您可以使用lookahead断言来确保 <strong> 有,但不是比赛的一部分(因此可以是下一场比赛的一部分):

    </strong>(.*?)(?=<strong>)
    

    但是,如果您得到的是HTML,那么应该使用HTML解析器来读取它,而不是regex,因为regex在解析HTML/XML标记方面非常糟糕。与 DOMDocument::loadHTML() , getElementsByName 因此,您将有一种更可靠的方法来抓取页面数据。

        2
  •  0
  •   pleasedontbelong    16 年前

    也许这只是一个拼写错误,但你不应该写一些像:

    preg_match_all("%</strong>(.*?)<strong>%s", $data, $all);
    

    在你的第一个例子中,我看不出你正在关闭标签。。但在“真实”的例子中你是。。也许就是这样

    推荐文章