<?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);
?>
请教一下  匹配一下链接和标题 这么写为什么不对

解决方案 »

  1.   

      我把php的编码也改成了gb2312的  匹配结果Array
    (
        [0] => Array
            (
            )    [1] => Array
            (
            )    [2] => Array
            (
            ))也是空,匹配不到军情热点的所有新闻
      

  2.   

    $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
            ))
      

  3.   


     <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多条新闻,但是实际情况是只匹配到一条,对正则,还不是很理解,请大神指点一下
      

  4.   


    <?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); ?>我试着这样写了一下 也不对呢  请大家帮忙看一下
      

  5.   

    它的连接不包括引号
    $reg = '#(?<=【军情热点】).*<a.+href=(.+)\s*target=\_blank>(.+)</a>(?=名家专栏)#isU'; 
      

  6.   


    $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);
    用了一种比较笨的方法。。