换行 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);
我正在尝试使用 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);