1. 程式人生 > >PHP抓取頁面中a標籤的href屬性值以及a中間內容

PHP抓取頁面中a標籤的href屬性值以及a中間內容

$str = file_get_contents($zh_cn_url);

$reg1='/<a href=\"(.*?)\".*?>(.*?)<\/a>/i';//匹配所有A標籤

preg_match_all($reg1,$str,$aarray);
//這個$aarray 你可以列印一下看下你具體的業務需要哪個陣列
//這個$aarray 是整個抓取的核心

$reg2="/href=\"([^\"]+)/";//獲取href中的值

$arr = array();

for($i=1;$i<=3;$i++){
//這裡講一下我抓取的是前三個所以只需要 1=< i <=3就可以了 
//如果想取出所有需要將for改為
//for($i=0;$i<count($aarray[0][$i]);$i++)

    preg_match_all($reg2,$aarray[0][$i],$hrefarray);

    $reg3="/>(.*)<\/a>/";//a標籤中的內容

    preg_match_all($reg3,$aarray[0][$i],$acontent);
  
    $arr[$i]['title'] = $acontent[1][0];
    
    $arr[$i]['url'] = $server_name.$hrefarray[1][0];
   
}                                                 
$data = array();

foreach ($arr as $key=>$val){

    $data[] = $val;

}

//為什麼還要用個foreach 在放進一個新的數組裡 ,這裡講一下,為了迎合我的業務邏輯需要將該陣列的內容變為
  //array(
  //     array('title'=>'a中內容1','url'=>'href屬性值1'),

  //     array('title'=>'a中內容2','url'=>'href屬性值2'),

  //     array('title'=>'a中內容3','url'=>'href屬性值3'),
  // );

return $json = json_encode($data); //返回json格式當然你也可以返回陣列,直接 return $data即可