php preg 匹配所有,所有的`p`
<?php
$str= <<<ETO
<p>one
two</p>
<p>three</p>
ETO;
preg_match_all('/<p>(.*?)<\/p>/',$str,$r);
print_r($r);
?>
我正在学习preg_match_all
。我想从一篇文章中获取所有p
。但我的代码只得到第二个p
。如何修改以便我可以获得第一个 p
。谢谢。
<?php
$str= <<<ETO
<p>one
two</p>
<p>three</p>
ETO;
preg_match_all('/<p>(.*?)<\/p>/',$str,$r);
print_r($r);
?>
I am studying preg_match_all
. I want get all the p
from one article. but my code only get the second p
. how to modify so that I can get the first p
, either. Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您在正则表达式末尾缺少
/ims
标志。否则.
将不匹配换行符(如第一段中所示)。实际上/s
就足够了,但为了简单起见,我总是使用这三个。此外, preg_match 适用于许多简单的情况。但如果您尝试任何更复杂的提取,请考虑交替使用 phpQuery 或 QueryPath ,它们允许:
You are missing the
/ims
flag at the end of your regex. Otherwise.
will not match line breaks (as in your first paragraph). Actually/s
would suffice, but I'm always using all three for simplicity.Also, preg_match works for many simple cases. But if you are attempting any more complex extractions, then consider alternating to phpQuery or QueryPath which allow for:
(.*?) 不匹配换行符。尝试 /s 修饰符:
(.*?) is not matching newline characters. Try the /s modifier: