Php 带preg_match_all的换行符
我正在尝试使用Php 带preg_match_all的换行符,php,html-parsing,preg-match,newline,preg-match-all,Php,Html Parsing,Preg Match,Newline,Preg Match All,我正在尝试使用preg\u match\u all捕获所有出现的。没有新词我也能用,但不能用。我在结尾使用了/s修改器,但没有使用 注意,最初我只能返回第一次出现,但我发现我可以使用一个断言,该断言使用(?=](.*)>) //如果文本中没有换行符,它将查找88和573 $text=''; preg_match_all('/](.*)>(?=](.*)>)/si',$text,$acell); 回声“; var_dump($acell); 回声“; //文本中有换行符,无法找到它。 $text=
preg\u match\u all
捕获所有出现的
。没有新词我也能用,但不能用。我在结尾使用了/s修改器,但没有使用
注意,最初我只能返回第一次出现,但我发现我可以使用一个断言,该断言使用(?=](.*)>)
//如果文本中没有换行符,它将查找88和573
$text='';
preg_match_all('/](.*)>(?=](.*)>)/si',$text,$acell);
回声“;
var_dump($acell);
回声“;
//文本中有换行符,无法找到它。
$text='1
';
preg_match_all('/](.*)>(?=](.*)>)/si',$text,$acell);
回声“;
var_dump($acell);
回声“;
更简单:
preg_match_all('/]+>/i',$text,$acell);
在
后面有新行,而不是在中。这里的断言只是碰巧起作用,它不适用于上面有换行符的文本。没有匹配的内容-甚至第一次出现都没有。确实如此:非常奇怪-我看到它在沙箱中工作,但在我的本地机器上仍然没有显示任何内容-剪切并粘贴到新的php文件中。好的,它不会显示单元格的内容,因为浏览器正在呈现标签。这就是为什么我对输出使用var\u dump
——它表明字符串具有长度。有没有一种方法可以在firefox中通过print\u r
显示标签来获得输出?pre
标签应该可以做到这一点,但我使用highlight\u字符串(print\r($acell,true))代码>
// 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);