博客列表 >PHP返回json格式及curl抓取数据正则匹配出数据-2019-10-18

PHP返回json格式及curl抓取数据正则匹配出数据-2019-10-18

无聊了的博客
无聊了的博客原创
2019年10月22日 16:28:54803浏览

实例

实例

<?php
header("Content-type: text/html; charset=utf-8");
function getCurl($url){
    $url = $url;

    $ch = curl_init();  //进行初始化句柄

    curl_setopt($ch,CURLOPT_URL,$url);  // 进行URL设置
//curl_setopt($ch,CURLOPT_HEADER,1);  // 是否将头部输出
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,0);  // 尝试连接时等待的秒数
    curl_setopt($ch,CURLOPT_TIMEOUT,30); // 设置超时时间
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 结果是直接输出 还是保存到文件中
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);  //  对认证证书来源的检查
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); // 从证书中检查SSL加密算法是否存在
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 页面发生301,302跳转


    $data = curl_exec($ch);  //执行curl 请求url,返回数据赋值data

    if(curl_errno($ch)){   //打印错误
        echo 'curl_error'.curl_error($ch);
    }
    curl_close($ch);  // 关闭句柄
    return $data;
}
$data = getCurl("https://www.jd.com/");
// echo getCurl();
preg_match('/<div\s+id="navitems".*>\s+<div class="spacer"><\/div>(.*)<div class="spacer"><\/div>\s+<\/div>/s',$data,$list);

preg_match_all('/<li.*>\s+<a.*href="(.*)"\s+.*>(.*)\s+<\/a>\s+<\/li>/Us',$list[0],$lists);
echo '<pre>';
$listArr = [];
array_push($listArr,$lists[1],$lists[2]);
echo "1、获取京东导航列表<br>";
echo return_json(0,"获取成功",$listArr);

function return_json($code=0,$msg="",$data=[]){
    if(!empty($data)){
        return json_encode([
            "code"=>$code,
            "msg"=>$msg,
            "data"=>$data
        ],JSON_UNESCAPED_UNICODE);
    }else{
        return json_encode([
            "code"=>"-1",
            "msg"=>"获取失败",
            "data"=>$data
        ],JSON_UNESCAPED_UNICODE);
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例



声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议