php匹配指定div內(nèi)容,在用php編寫采集程序的時(shí)候,抓取到的網(wǎng)頁數(shù)據(jù)有時(shí)候我們只需要一小段標(biāo)簽內(nèi)容,怎么才能沖html代碼中提取出來呢,這里提供一個(gè)函數(shù)示例,實(shí)現(xiàn)php匹配任意html標(biāo)簽內(nèi)的所有內(nèi)容:
站在用戶的角度思考問題,與客戶深入溝通,找到桂東網(wǎng)站設(shè)計(jì)與桂東網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋桂東地區(qū)。
/** * 匹配任意id的html標(biāo)簽內(nèi)容 * */ function getWebTag($tag_id,$tag='div',$data=false){ $charset_pos = stripos($data,'charset'); if($charset_pos) { if(stripos($data,'utf-8',$charset_pos)) { $data = iconv('utf-8','utf-8',$data); }else if(stripos($data,'gb2312',$charset_pos)) { $data = iconv('gb2312','utf-8',$data); }else if(stripos($data,'gbk',$charset_pos)) { $data = iconv('gbk','utf-8',$data); } } preg_match_all('/<'.$tag.'/i',$data,$pre_matches,PREG_OFFSET_CAPTURE); //獲取所有div前綴 preg_match_all('/<\/'.$tag.'/i',$data,$suf_matches,PREG_OFFSET_CAPTURE); //獲取所有div后綴 $hit = strpos($data,$tag_id); if($hit == -1) return false; //未命中 $divs = array(); //合并所有div foreach($pre_matches[0] as $index=>$pre_div){ $divs[(int)$pre_div[1]] = 'p'; $divs[(int)$suf_matches[0][$index][1]] = 's'; } //對(duì)div進(jìn)行排序 $sort = array_keys($divs); asort($sort); $count = count($pre_matches[0]); foreach($pre_matches[0] as $index=>$pre_div){ //<div $hit <div+1 時(shí)div被命中 if(($pre_matches[0][$index][1] < $hit) && ($hit < $pre_matches[0][$index+1][1])){ $deeper = 0; //彈出被命中div前的div while(array_shift($sort) != $pre_matches[0][$index][1] && ($count--)) continue; //對(duì)剩余div進(jìn)行匹配,若下一個(gè)為前綴,則向下一層,$deeper加1, //否則后退一層,$deeper減1,$deeper為0則命中匹配,計(jì)算div長(zhǎng)度 foreach($sort as $key){ if($divs[$key] == 'p') $deeper++; else if($deeper == 0) { $length = $key-$pre_matches[0][$index][1]; break; }else { $deeper--; } } $hitDivString = substr($data,$pre_matches[0][$index][1],$length).'</'.$tag.'>'; break; } } return $hitDivString; }
調(diào)用示例
$html=file_get_contents('http://www.baidu.com');
$divContent=getWebTag('id="content"','div',$html);
網(wǎng)頁題目:php匹配指定標(biāo)簽的內(nèi)容
當(dāng)前路徑:http://jinyejixie.com/article24/ijdpje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、小程序開發(fā)、外貿(mào)建站、App設(shè)計(jì)、微信小程序、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)