提取html中某内容,求正则

2013 年 9 月 25 日
 jacy
html如下:

XXX
<div class="content">

XXXX

</div>
XXX

主要是提取content这个div里的内容,但是这里面的内容不固定,可能里面没有其他标签,还可能有其他的div等标签,正则怎样写呢?
php除了正则还有什么比较方便的方法处理html?
6217 次点击
所在节点    PHP
19 条回复
yangqi
2013 年 9 月 25 日
php正则还是最方便了,这个放在前段用jquery很容易就提取了
jacy
2013 年 9 月 25 日
@yangqi 放前端不行啊,是用php抓取的数据,还需要处理后继续用。
emric
2013 年 9 月 25 日
Don't try to parse HTML using regex. Find an HTML parser please.
kojp
2013 年 9 月 25 日
A class named snopy

Have a try.
yangqi
2013 年 9 月 26 日
@jacy 如果只是简单提取内容的话regex可以,要是有各种parsing的话可以试试simplehtml库
PrideChung
2013 年 9 月 26 日
对于HTML这么复杂的文本正则处理不来的,找个HTML parser才是正道。
pantaovay
2013 年 9 月 26 日
正则处理不来,用DOM操作吧
jacy
2013 年 9 月 26 日
谢谢,我试试simplehtml。
mescoda
2013 年 9 月 26 日
PHP 用 simplehtmldom
Python 用 [pywebquery](https://github.com/NStal/pywebquery)
Node 用 [jwebquery](https://github.com/NStal/jwebquery)
ericls
2013 年 9 月 26 日
@mescoda 谢谢 我明天看看
foru17
2013 年 9 月 26 日
我记得正则好像是行的。你搜一下 google 搜索结果 正则,参考一下,之前弄过一个类似的。
faceair
2013 年 9 月 26 日
<div class=\"content\">([\s\S]+?(<div[\s\S]+?<\/div>)+?[\s\S]+?)<\/div>

手机写的,你测试下,主要是确定中间的div是一对一对就可以了
liuyao729
2013 年 9 月 26 日
试试phpQuery
faceair
2013 年 9 月 26 日
修改了下,测试貌似通过了

<div class=\"content\">([\s\S]+?(<div[\s\S]+?<\/div>)*?[\s\S]+?)*?<\/div>
alexrezit
2013 年 9 月 26 日
不 要 用 正 则.
找 个 parser 用 XPath 很 难 么?
cxshun
2013 年 9 月 26 日
其实xpath不是更方便么,直接//div[class='content']/*这个就OK啦。正则解析HTML是没办法的选择。
jiych
2013 年 9 月 26 日
可以用flex
openclaw
2013 年 9 月 26 日
前端方便
marchtea
2013 年 9 月 26 日
用simple_html_dom来读取,再处理吧.直接弄貌似不是很好弄

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/83699

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX