正則在小偷程序中的應用(續)

	//獲取資源信息
            $content = file_get_contents("http://list.sososteel.com/qg/list.html?pg=1&h=".time());
	/*對抓取的信息進行處理。取class爲listTable的表信息。[^<>]匹配除<>外的所有字符。*?用的是懶惰限定符,代表重複任意次,但儘量少重複。即匹配最短的以<table開始的,以class="listTable"爲結束的字符串。如aabbcc字符串,如果用懶惰限定符匹配的話應該是aab。如果用貪婪匹配的話應該aabb。*/
            preg_match("/<table [^<>]*? class=\\\"listTable\\\">(.*?)<\/table>/s",$content,$out);
	/*抓取tbody的內容,重複一次或多次*/
            preg_match_all("/<tbody>(.+?)<\/tbody>/s",$out[1],$outData);
            if(empty($outData[1])){
                return null;
            }else{
                $out_arr=array();
				//循環輸出抓取的內容
                foreach($outData[1] as $i=>$key){
					//取td的內容
                    preg_match_all("/<td.*?>(.+?)<\/td>/s",$key,$td);
                    if(count($td[1])==7){
                        foreach($td[1] as $j=>$em){
                            //$em = iconv("gb2312","utf-8",$em);
                            switch($j){
                                case 0:continue;break;
                                case 1:continue;break;
                                case 2:
                                    preg_match_all("/<a.*?>(.+?)\<\/a>/s",$em,$name);
                                    $out_arr[$i]['name']=$name[1][0];
                                    preg_match_all("/<span.*?>(.+?)\<\/span>/s",$em,$time);
                                    $out_arr[$i]['time']=$time[1][0];
                                    preg_match_all("/<div class=\\\"listText\\\">(.+?)<br \/>/s",$em,$other);
                                    if(empty($other[1])){
                                        $out_arr[$i]['spec']=null;
                                        $out_arr[$i]['mater']=null;
                                        $out_arr[$i]['factory']=null;
                                    }else{
                                        $oth=explode("   ",implode('',$other[1]));
                                        $out_arr[$i]['spec']=trim($oth[0]);
                                        $out_arr[$i]['mater']=trim($oth[1]);
                                        $out_arr[$i]['factory']=trim($oth[2]);
                                    }
                                    $out_arr[$i]['company']=$name[1][1];
                                    continue;break;
                                case 3:
                                    $out_arr[$i]['city']=trim($em);
                                    continue;break;
                                case 4:
                                    $out_arr[$i]['price']=trim(strip_tags($em));
                                    continue;break;
                            }
                        }
                    } else
                    continue;
                }
            }
           print_r($out_arr);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章