做抓取信息 ,文章链接,出处,作者,时间,还有要抓取文章内容
如:http://www.bjxch.gov.cn/pub/xch_zhuzhan/xwzhx/A3_10/index.html  
链接和标题都抓取了,但链接的内容怎么抓不到
就说其中的一个链接内容吧
链接是:http://www.bjxch.gov.cn/pub/xch_zhuzhan/xwzhx/A3_10/201005/t20100510_1158339.html
我把提取内容的规则写成:"/(<\/style>.*<\/td>)/i"  
却提不出内容,整篇文章只有一个</style>,这么写怎么不对哦,想直接用正则表达中文,又不会

解决方案 »

  1.   

    源码里有好几个style啊,你对网页分析的有问题吧
    匹配不出来的主要问题是网页源码是分行的,你程序里的匹配只是单行匹配,所以没有结果
    应该在后面加上选项sm
    另外用.*默认是贪婪匹配,会找到最后一个<\td>的,而不是正文后面的那个
    如果你确认正文中不会出现</td>,应该改为非贪婪匹配,即加一个?
    最终可能是这个
    "/(<\/style>.*?<\/td>)/ism"
      

  2.   


    $str = file_get_contents('http://www.bjxch.gov.cn/pub/xch_zhuzhan/xwzhx/A3_10/201005/t20100510_1158339.html');
    preg_match("/[\s\S]*<\/style>([\s\S]*?)<\/td>[\s\S]*?/i", $str, $match);
    var_dump($match);
      

  3.   

    <?php
    $str = <<< HTML
    DIV.union TD {
    FONT-SIZE: 14px; LINE-HEIGHT: 18px
    }</style>
      昨天,西城区少工委在育翔小学举行“爱心手拉手,书香传友谊”捐建“红领巾好少年书屋”活动。该区2.6万名少先队员将在一周内捐出15万册图书,并于“六一”儿童节前送往青海玉树灾区小伙伴手中。  </td>
                              </tr>
                            </table>
    HTML;
    preg_match('#</style>(.+)</td>#is',$str,$m);
    var_dump($m[1]);
    ?>