preg_match_all的换行符

时间:2015-02-19 19:23:49

标签: php html-parsing preg-match newline preg-match-all

我正在尝试使用<col width="NUMBER">捕获所有出现的preg_match_all。我没有换行就能让它工作,但不能用它们。我最后使用了/ s修饰符,但没有去。

注意,最初我只能返回第一次出现,但我发现我可以使用一个断言,它使用(?=<col width=[^>](.*)>)

给了我所有出现的事件
// without newlines in text, it finds 88 and 573
    $text = '<table><colgroup><col width="88"><col width="573"></colgroup>';

    preg_match_all('/<col width=[^>](.*)>(?=<col width=[^>](.*)>)/si', $text, $acell);
    echo "<pre>";
    var_dump($acell);
    echo "</pre>";    

// with newlines in text, can't find it.
    $text = '<table>
    <colgroup><col width="88">
    <col width="573">
    </colgroup>';

    preg_match_all('/<col width=[^>](.*)>(?=<col width=[^>](.*)>)/si', $text, $acell);    
    echo "<pre>";
    var_dump($acell);
    echo "</pre>";    

1 个答案:

答案 0 :(得分:0)

更简单:

preg_match_all('/<col width=[^>]+>/i', $text, $acell);