换行 preg_match_all

Newlines with preg_match_all

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

请注意,最初我只能 return 第一次出现,但我发现我可以使用一个断言,它给了我所有出现的地方 (?=<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>";    

就简单多了:

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