正则表达式的问题?

wft1987 2010-07-15 09:52:50
我想取一个网页的新闻的标题 标题的代码如下:
<h1>·<a href='http://it.sohu.com/20100715/n273520447.shtml' target='_blank'>“学历门”引爆精英诚信危机 有价文凭风行内地</a><span>(07/15 09:17)</span></h1>

我现在用正则
$preg = "#<h1>·<a href='(.*)' target='_blank'>(.*)</a><span>#iUs";
取出来为空

$preg = "#<a href='(.*)' target='_blank'>(.*)</a><span>#iUs";
倒是能取出来 但是取出来的却不是我想要的
...全文
65 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
life169 2010-07-16
问 楼上 *后面为什么要跟? 好像问号是多余的呀,能解释下吗?
回复
houhxyanzi 2010-07-16
[Quote=引用 8 楼 life169 的回复:]
问 楼上 *后面为什么要跟? 好像问号是多余的呀,能解释下吗?
[/Quote]
*后边?这个表示匹配到第一个就结束了,也就是非贪婪的
回复
床上等您 2010-07-15
出来就行了,多动手,比问出来强很多。
顺便接个分。
回复
wft1987 2010-07-15
搞出来了,
$preg = "#<h1>(.*)<a href='(.*)' target='_blank'>(.*)</a><span>#iUs";

这样就行了
回复
wft1987 2010-07-15
下面的是能取出来 我要的只是标题和连接 用下面的代码取出来把内容也给取出来了
回复
kyzy_yy_pm 2010-07-15
不是出来了么
回复
Dleno 2010-07-15

preg_match_all('~<h1[^>]*?>·<a[^>]*?href="(.*?)"[^>]*?>(.*?)</a><span[^>]*?>(.*?)</span></h1>~is',$str,$data);
print_r($data);
回复
liuahuilele 2010-07-15
哈哈 搞定 就结了吧
回复
sindel 2010-07-15
·难道是特殊字符?

接分吧
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告