【发布时间】:2014-08-08 03:52:38
【问题描述】:
我有一个这样的html页面
<!DOCTYPE html>
<html>
....
<body>
<div class="list-news fl pt10 ">
Blue
</div>
<div class="list-news fl pt10 alternative">
Yellow
</div>
<div class="list-news fl pt10 ">
Red
</div>
<div class="list-news fl pt10 alternative">
Cyan
</div>
<div class="list-news fl pt10 ">
Black
</div>
<div class="list-news fl pt10 alternative">
White
</div>
</body>
</html>
现在我将编写一个排序 php 代码来获取我需要的所有内容
preg_match_all('@<div class="list-news fl pt10 .*?">(.*?)<div class="list-news fl pt10 .*?">@s',$rs,$match);
这是结果
[1] => Array
(
[0] => <div>Blue</div></div>
[1] => <div>Red</div></div>
[2] => <div>Black</div></div>
)
结果仅显示 div <div class="list-news fl pt10 "> 中的内容,而不显示 <div class="list-news fl pt10 alternative"> 中的内容我可以使用 str_replace 删除 alternative 类但如果不替换此字符串,如何获取每个 div 匹配类中的所有内容@ 987654327@?
感谢您的想法。
【问题讨论】:
-
改用php DOM扩展并通过xpath搜索
-
你的正则表达式,顺便说一句,直到结束
</div才匹配,但会消耗下一个开口;这就是为什么它会互相跳过。