请教一个正则问题这么写问什么匹配不对 <?php $str = file_get_contents("http://mil.news.sina.com.cn"); // 军情热点 $reg = '#【军情热点】.*<a.*href="(.*).*>(.*)</a>"#iUs'; preg_match_all($reg,$str,$m); echo "<pre>"; print_r($m);?>请教一下 匹配一下链接和标题 这么写为什么不对 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我把php的编码也改成了gb2312的 匹配结果Array( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ))也是空,匹配不到军情热点的所有新闻 $str = file_get_contents("http://mil.news.sina.com.cn");// 军情热点$reg = '#【军情热点】.+?href=(\S+)#is';preg_match_all($reg,$str,$m);print_r($m);Array( [0] => Array ( [0] => 【军情热点】</font></a><a href=http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1 ) [1] => Array ( [0] => http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1 )) <ul class="green-dot"> <li><a href=http://roll.mil.news.sina.com.cn/blog/js-jsrd/index.shtml target=_blank><font color=red>【军情热点】</font></a><a href=http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1 target=_blank>日华裔美女组合拍摄保钓写真震惊日本</a></li> <li><a href=http://blog.sina.com.cn/s/blog_5f567ee50102ecyz.html?tj=1 target=_blank>中国突然又对美国出狠手</a> <a href=http://blog.sina.com.cn/s/blog_5dec40f90102e8d5.html?tj=1 target=_blank>南沙守礁解放军全部失踪</a></li> <li><a href=http://blog.sina.com.cn/s/blog_6cf469630101acnj.html?tj=1 target=_blank>这图泄得太猛:难怪美国军方如此害怕中国二炮</a></li> <li><a href=http://blog.sina.com.cn/s/blog_5dec6b250102eiy3.html?tj=1 target=_blank>中国版F-22战机歼23被泄</a> <a href=http://blog.sina.com.cn/s/blog_5dec52e20102e2be.html?tj=1 target=_blank>英媒称中国C805世界第一</a></li> <li><a href=http://blog.sina.com.cn/s/blog_6cf460350101fspr.html?tj=1 target=_blank>看到了什么:解放军少将参观美军基地后目瞪口呆</a></li> <li><a href=http://blog.sina.com.cn/s/blog_5f56caa20102e55x.html?tj=1 target=_blank>日称中国这种导弹太厉害</a> <a href=http://blog.sina.com.cn/s/blog_69715e290101fdtt.html?tj=1 target=_blank>中国人来到印度被惊呆了</a></li> <li><a href=http://blog.sina.com.cn/s/blog_6cf465250101m2r9.html?tj=1 target=_blank>这才是真正的国产大运:绝对是C919比不了的</a></li> <li><a href=http://blog.sina.com.cn/s/blog_5d430ad60102eihj.html?tj=1 target=_blank>安倍欲突然访华惊呆美国</a> <a href=http://blog.sina.com.cn/s/blog_6971434d01019aez.html?tj=1 target=_blank>法表态力挺中国气坏日本</a></li> <li><a href=http://blog.sina.com.cn/s/blog_5d49b0410102e3bq.html?tj=1 target=_blank>春晓油田八年竟未产一滴油:真实内幕令国人震惊</a></li> </ul>匹配这10多条新闻, 但是这样形式的 <ul class="green-dot"> 在查看源码里有很多,我是这样想的,如果从“军情热点” 开始匹配就能准确的匹配到这10多条新闻,但是实际情况是只匹配到一条,对正则,还不是很理解,请大神指点一下 <?php$str = file_get_contents("http://mil.news.sina.com.cn"); $reg = '#(?<=【军情热点】).*<a.+href="(.+)".+>(.+)</a>(?=名家专栏)#isU'; preg_match_all($reg,$str,$m); echo "<pre>";print_r($m); ?>我试着这样写了一下 也不对呢 请大家帮忙看一下 它的连接不包括引号$reg = '#(?<=【军情热点】).*<a.+href=(.+)\s*target=\_blank>(.+)</a>(?=名家专栏)#isU'; $s_html = file_get_contents("http://mil.news.sina.com.cn");$s_html = iconv('gbk', 'utf-8', $s_html);$s_gd_reg = '#【军情热点】(.*)</ul>#iUs';$a_gd_match = array();preg_match_all($s_gd_reg, $s_html, $a_gd_match);$s_news = $a_gd_match[1][0];$s_news_reg = '#<a\s+href=(.*)\s+.*>(?:<font color=red>)?([^<>]*)(?:</font>)?</a>#iUs';$a_news_match = array();preg_match_all($s_news_reg, $s_news, $a_news_match);print_r($a_news_match);用了一种比较笨的方法。。 php excel reader 读取时间字段出错,谁会弄得 网站被别人攻击, php 变量问题 请教:内网IP段自动跳转到不同IP。 请教php数据查询row问题 关于discuz! 连接数据库的问题 关于PHP获取到数据传递给JS 关于自动生成html页面的问题请考高手 请教如何验证提交的表单!大家帮个忙吧!(2)解决了连这100一起给! PHPLIB是什么?怎么来用呢?帮帮我!!! 怎样才能让登录网页更快一些 PHP变量名前,有两个$$,有什么作用?
(
[0] => Array
(
) [1] => Array
(
) [2] => Array
(
))也是空,匹配不到军情热点的所有新闻
// 军情热点
$reg = '#【军情热点】.+?href=(\S+)#is';
preg_match_all($reg,$str,$m);
print_r($m);Array
(
[0] => Array
(
[0] => 【军情热点】</font></a><a href=http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1
) [1] => Array
(
[0] => http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1
))
<ul class="green-dot">
<li><a href=http://roll.mil.news.sina.com.cn/blog/js-jsrd/index.shtml target=_blank><font color=red>【军情热点】</font></a><a href=http://blog.sina.com.cn/s/blog_69710d610101fglf.html?tj=1 target=_blank>日华裔美女组合拍摄保钓写真震惊日本</a></li>
<li><a href=http://blog.sina.com.cn/s/blog_5f567ee50102ecyz.html?tj=1 target=_blank>中国突然又对美国出狠手</a> <a
href=http://blog.sina.com.cn/s/blog_5dec40f90102e8d5.html?tj=1 target=_blank>南沙守礁解放军全部失踪</a></li>
<li><a href=http://blog.sina.com.cn/s/blog_6cf469630101acnj.html?tj=1 target=_blank>这图泄得太猛:难怪美国军方如此害怕中国二炮</a></li>
<li><a href=http://blog.sina.com.cn/s/blog_5dec6b250102eiy3.html?tj=1 target=_blank>中国版F-22战机歼23被泄</a> <a href=http://blog.sina.com.cn/s/blog_5dec52e20102e2be.html?tj=1 target=_blank>英媒称中国C805世界第一</a></li>
<li><a href=http://blog.sina.com.cn/s/blog_6cf460350101fspr.html?tj=1 target=_blank>看到了什么:解放军少将参观美军基地后目瞪口呆</a></li>
<li><a href=http://blog.sina.com.cn/s/blog_5f56caa20102e55x.html?tj=1 target=_blank>日称中国这种导弹太厉害</a> <a
href=http://blog.sina.com.cn/s/blog_69715e290101fdtt.html?tj=1 target=_blank>中国人来到印度被惊呆了</a></li>
<li><a href=http://blog.sina.com.cn/s/blog_6cf465250101m2r9.html?tj=1 target=_blank>这才是真正的国产大运:绝对是C919比不了的</a></li>
<li><a href=http://blog.sina.com.cn/s/blog_5d430ad60102eihj.html?tj=1 target=_blank>安倍欲突然访华惊呆美国</a> <a
href=http://blog.sina.com.cn/s/blog_6971434d01019aez.html?tj=1 target=_blank>法表态力挺中国气坏日本</a></li>
<li><a href=http://blog.sina.com.cn/s/blog_5d49b0410102e3bq.html?tj=1 target=_blank>春晓油田八年竟未产一滴油:真实内幕令国人震惊</a></li>
</ul>匹配这10多条新闻, 但是这样形式的 <ul class="green-dot"> 在查看源码里有很多,我是这样想的,如果从“军情热点” 开始匹配就能准确的匹配到这10多条新闻,但是实际情况是只匹配到一条,对正则,还不是很理解,请大神指点一下
<?php
$str = file_get_contents("http://mil.news.sina.com.cn");
$reg = '#(?<=【军情热点】).*<a.+href="(.+)".+>(.+)</a>(?=名家专栏)#isU';
preg_match_all($reg,$str,$m);
echo "<pre>";
print_r($m); ?>我试着这样写了一下 也不对呢 请大家帮忙看一下
$reg = '#(?<=【军情热点】).*<a.+href=(.+)\s*target=\_blank>(.+)</a>(?=名家专栏)#isU';
$s_html = file_get_contents("http://mil.news.sina.com.cn");
$s_html = iconv('gbk', 'utf-8', $s_html);$s_gd_reg = '#【军情热点】(.*)</ul>#iUs';
$a_gd_match = array();
preg_match_all($s_gd_reg, $s_html, $a_gd_match);$s_news = $a_gd_match[1][0];
$s_news_reg = '#<a\s+href=(.*)\s+.*>(?:<font color=red>)?([^<>]*)(?:</font>)?</a>#iUs';
$a_news_match = array();
preg_match_all($s_news_reg, $s_news, $a_news_match);
print_r($a_news_match);
用了一种比较笨的方法。。