原生态php通过dom获取div/table里面的内容,不用正则!

版权声明:经验之谈,不知能否换包辣条,另,转载请注明出处。 https://blog.csdn.net/zhezhebie/article/details/61204158

原生态php获取网页标签里面的内容,不用插件!不用正则,直接一把抠出来!

error_reporting(E_ALL);
$out=_getUrl('http://www.gdczepb.gov.cn/detail/23328');

$out=preg_replace(array('/<head>([\s\S]+?)<\/head>/i','/<p>/i'),array('<head><meta http-equiv="Content-Type" content="text/html;charset=utf-8"></head>','<br><p>'),$out);

    // echo $out;
    $dom = new DOMDocument();
    @$dom->loadHTML($out);
    $xpath = new DOMXPath($dom);

    $url=$xpath->query("//div[@class='contents']");
    $str=$url->item(0)->nodeValue;
    echo '<pre>'; 
      print_r($str);
      // print_r(htmlspecialchars($str));
    echo '</pre>';

//以下是通过curl传输数组参数获取html内容!
function _getUrl($url){
   $curl=curl_init();
   $options=array(
        CURLOPT_URL=>$url,
        CURLOPT_RETURNTRANSFER =>1,
        CURLOPT_USERAGENT=>'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36',
        CURLOPT_CONNECTTIMEOUT=>60
        );
   curl_setopt_array($curl,$options);
   $out=curl_exec($curl);
   curl_close($curl);
   return $out;
    }

这里面遇到个大问题,字符集编码错乱,因为原页面没有设置字符编码集,但是loadHtml的时候默认是utf-8编码,但是读取的内容里面一定要在title前面申明字符集,如果不是utf-8需要转换。这里不细说,已经有人讲得很好了,我直接把链接放上来http://www.fwolf.com/blog/post/314

阅读更多

扫码向博主提问

SHUIPING_YANG

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • php
  • laravel
  • mysql
  • linux
去开通我的Chat快问

没有更多推荐了,返回首页