分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

php curl的正确使用方法

发布时间:2023-09-06 01:19责任编辑:苏小强关键词:url

在做一个读取远程抓取数据并显示的demo的时候,遇到了以下几个问题:

1.用的curl变量进行了多定义

2.抓取远程数据时没有返回正确的json数据

没有返回正确的json数据不是因为网站提供的接口问题,而是因为

curl_setopt($ch, CURLOPT_HEADER, 1);

上面的这一行代码在网站数据只返回Json数据时会在Json数据上加入一些http头文件的信息,导致解析json数据错误

第一个问题在于我定义了多个$ch1、$ch2、$ch3等的curl变量,实际上是不需要的,以下的代码形式同样可以行得通:

 ???$ch = curl_init(); ???curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com"); ???curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ???$output1=curl_exec($ch); ???//将$output1字符串从gbk,utf-8,ascii转化为utf-8// ???????$rs = mb_convert_encoding($output1,‘utf-8‘,‘GBK,UTF-8,ASCII‘); //加上这行 ????curl_close($ch); ???????//$ch可以重名 ???$ch = curl_init(); ???curl_setopt($ch, CURLOPT_URL, "http://news.baidu.com/"); ???//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出 ???curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ???//启动时会将头文件的信息作为数据流输出 ???curl_setopt($ch, CURLOPT_HEADER, 1); ???$output2=curl_exec($ch); ???curl_close($ch); ???????dump($output2);

或者是,如下的形式,不必每次都初始化,而是初始化后,不断使用curl_setopt和curl_exec方法,最后的时候再关闭即可:

 ???$ch = curl_init(); ???curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com"); ???curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ???$output1=curl_exec($ch); ???curl_setopt($ch, CURLOPT_URL, "http://news.baidu.com/"); ???//将curl_exec()获取的信息以文件流的形式返回,而不是直接输出 ???curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ???//启动时会将头文件的信息作为数据流输出 ???curl_setopt($ch, CURLOPT_HEADER, 1); ???$output2=curl_exec($ch); ???curl_close($ch); ???dump($output1);

php curl的正确使用方法

原文地址:http://www.cnblogs.com/wgphp/p/7707917.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved