<?php
$wd = $_GET['wd'];
if(!empty($_GET['wd'])){
set_time_limit(0);
$wd = $_GET['wd'];
$wd = preg_replace('/[ ]+/',' ',$wd);
$url = 'http://www.xxx.com/s?wd='.urlencode($wd);
$s = file_get_contents($url);
preg_match('/<body[^>]*>([\s\S]*)<\/body>/iU',$s,$d);
$s = $d[1];
$arr = array("/\s+/","/\s*<\s*/","/\s*>\s*/","/\s*=\s*/");
$to = array(' ','<','>','=');
$s = preg_replace($arr,$to,$s);
$reg = '/<table[^>]*id="\d*"[^>]*>([\s\S]*)<\/table>/iU';
$reg_tit = '/<a[^>]*href="([^"]*)"[^>]*>([\s\S]*)<\/a>/iU';
$reg_intro = '/<font size=(-1|"-1")>([\s\S]*)<br/iU';
$reg_time = '/\d{4}-\d{1,2}-\d{1,2}/';

preg_match_all($reg,$s,$d);
if(count($d[0])){
foreach($d[1] as $s){
preg_match($reg_tit,$s,$d);
$d2['url'] = $d[1];
$d2['title'] = preg_replace("/<[^>]*>/",'',$d[2]);
preg_match($reg_intro,$s,$d);
$d2['intro'] = preg_replace("/<[^>]*>/",'',$d[2]);
preg_match($reg_time,$s,$d);
$d2['time'] = $d[0];
$RS_data[] = $d2;
}
unset($d);
}
}?>有部分代码看不懂,如下:
preg_match('/<body[^>]*>([\s\S]*)<\/body>/iU',$s,$d);
$s = $d[1];
$arr = array("/\s+/","/\s*<\s*/","/\s*>\s*/","/\s*=\s*/");
$to = array(' ','<','>','=');
$s = preg_replace($arr,$to,$s);
$reg = '/<table[^>]*id="\d*"[^>]*>([\s\S]*)<\/table>/iU';
$reg_tit = '/<a[^>]*href="([^"]*)"[^>]*>([\s\S]*)<\/a>/iU';
$reg_intro = '/<font size=(-1|"-1")>([\s\S]*)<br/iU';
$reg_time = '/\d{4}-\d{1,2}-\d{1,2}/';
大侠帮我解析一下吧

解决方案 »

  1.   

    //匹配<body></body>之间的内容
    preg_match('/<body[^>]*>([\s\S]*)<\/body>/iU',$s,$d);
    $s = $d[1];//替换文本
    $arr = array("/\s+/","/\s*<\s*/","/\s*>\s*/","/\s*=\s*/");
    $to = array(' ','<','>','=');
    $s = preg_replace($arr,$to,$s);//匹配table中的内容
    $reg = '/<table[^>]*id="\d*"[^>]*>([\s\S]*)<\/table>/iU';//这三个变量都解释了
    $reg_tit = '/<a[^>]*href="([^"]*)"[^>]*>([\s\S]*)<\/a>/iU';
    $reg_intro = '/<font size=(-1|"-1")>([\s\S]*)<br/iU';
    $reg_time = '/\d{4}-\d{1,2}-\d{1,2}/';