博主信息
Lon
博文
29
粉丝
0
评论
0
访问量
3267
积分:0
P豆:64

PHP JSON与cURL 函数

2021年10月23日 18:01:15阅读数:33博客 / Lon/ PHP

PHP JSON与cURL 函数

一、什么是 JSON ?

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
  • JSON 具有自我描述性,更易理解

二、JSON 函数

函数 描述
json_encode 对变量进行 JSON 编码
json_decode 对 JSON 格式的字符串进行解码,转换为 PHP 变量
json_last_error 返回最后发生的错误

1、json_encode

PHP json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。

实例

  1. <?php
  2. $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5];
  3. echo json_encode($arr);//{"a":1,"b":2,"c":3,"d":4,"e":5}
  4. $arr2 = ['name'=>'张三','name2'=>'李四','name3'=>'王五','name4'=>'赵六'];
  5. echo json_encode($arr2,JSON_UNESCAPED_UNICODE);//{"name":"张三","name2":"李四","name3":"王五","name4":"赵六"}
  6. ?>

要注意的是 JSON_UNESCAPED_UNICODE 选项,如果我们不希望中文被编码,可以添加该选项。

2.json_decode

PHP json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。

实例

  1. <?php
  2. $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
  3. var_dump(json_decode($json));
  4. var_dump(json_decode($json, true));当第二个参数为 TRUE 时,将返回数组, FALSE 时返回对象,默认为 FALSE
  5. ?>

以上代码执行结果为:

  1. object(stdClass)#1 (5) {
  2. ["a"] => int(1)
  3. ["b"] => int(2)
  4. ["c"] => int(3)
  5. ["d"] => int(4)
  6. ["e"] => int(5)
  7. }
  8. array(5) {
  9. ["a"] => int(1)
  10. ["b"] => int(2)
  11. ["c"] => int(3)
  12. ["d"] => int(4)
  13. ["e"] => int(5)
  14. }

二、cURL 函数

CURL是PHP的一个扩展,利用该扩展可以实现服务器之间的数据或文件传输,用来采集网络中的html网页文件、其他服务器提供接口数据等。

实例(封装cURL函数)

  1. /**
  2. * 请求接口返回内容
  3. * @param string $url [请求的URL地址]
  4. * @param string $params [请求的参数]
  5. * @param int $ipost [是否采用POST形式]
  6. * @return string
  7. */
  8. function curl_data($url, $params = false, $ispost = 0){
  9. $ch = curl_init();//创建了一个curl会话资源,成功返回一个句柄;
  10. curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); // 默认值,让 cURL 自己判断使用哪个版本。 (强制使用 HTTP/1.1)。
  11. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); // 在尝试连接时等待的秒数。设置为0,则无限等待。
  12. curl_setopt($ch, CURLOPT_TIMEOUT, 60); // 设置超时限制防止死循环
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 要求结果保存到字符串中还是输出到屏幕上
  14. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 爬取重定向页面
  15. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);// 对认证证书来源的检查
  16. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);// 从证书中检查SSL加密算法是否存在
  17. if ($ispost) {
  18. curl_setopt($ch, CURLOPT_POST, true); // 发送一个常规的Post请求
  19. curl_setopt($ch, CURLOPT_POSTFIELDS, $params); // Post提交的数据包
  20. curl_setopt($ch, CURLOPT_URL, $url); // 设置URL
  21. } else {
  22. // GET请求,组装url
  23. if ($params) {
  24. curl_setopt($ch, CURLOPT_URL, $url.'?'.$params);
  25. } else {
  26. curl_setopt($ch, CURLOPT_URL, $url);
  27. }
  28. }
  29. $response = curl_exec($ch); // 运行cURL,请求URL,把结果复制给变量
  30. curl_close($ch); // 关闭curl连接
  31. return $response; // 返回获得的数据
  32. }

三、实际应用

请求聚合天气查询接口,实现天气查询 http://www.lonhaiy.com/tqyb/index.php

  1. <?php
  2. //引入function.php 请求文件(把cUrl封装函数放在自己创建的function.php文件中)
  3. require "function.php";
  4. if(is_post()){
  5. if($_POST['city'] != ''){
  6. //接口请求地址
  7. $url = 'http://apis.juhe.cn/simpleWeather/query';
  8. //接口请求参数
  9. $parameter = [
  10. 'city' => $_POST['city'],
  11. 'key' => '' //你自己的key
  12. ];
  13. $res = json_decode(get_url($url,$parameter),true);
  14. if($res["error_code"] == 0) {
  15. $data = $res["result"];
  16. }
  17. }else{
  18. echo "<script>alert('请输入城市名称')</script>";
  19. }
  20. }
  21. ?>
  22. <!DOCTYPE html>
  23. <html lang="en">
  24. <head>
  25. <meta charset="UTF-8">
  26. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  27. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  28. <title>天气预报</title>
  29. <script src="./jquery.min.js"></script>
  30. <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
  31. <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu"
  32. crossorigin="anonymous">
  33. <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
  34. <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd"
  35. crossorigin="anonymous"></script>
  36. <style>
  37. .main {
  38. max-width: 750px;
  39. margin: auto;
  40. padding: 15px;
  41. }
  42. .header{
  43. padding: 30px 0;
  44. margin: auto;
  45. }
  46. .header form{
  47. text-align: center;
  48. }
  49. .form-inline .form-group {
  50. display: inline-block;
  51. margin-bottom: 0;
  52. vertical-align: middle;
  53. }
  54. blockquote{
  55. border-left: 5px solid #1b809e;
  56. }
  57. </style>
  58. </head>
  59. <body>
  60. <div class="main">
  61. <div class="header">
  62. <form class="form-inline" action="index.php" method="post">
  63. <div class="form-group">
  64. <input type="text" class="form-control" name="city" placeholder="请输入城市名称">
  65. </div>
  66. <button type="submit" class="btn btn-primary">天气查询</button>
  67. </form>
  68. </div>
  69. <?php if(isset($res)){ ?>
  70. <?php if($res["error_code"] == '0'){ ?>
  71. <div class="content">
  72. <blockquote>
  73. <p>查询结果</p>
  74. </blockquote>
  75. <h5>今日天气</h5>
  76. <table class="table table-bordered table-hover">
  77. <tr>
  78. <td>城市</td>
  79. <td><?=$data["city"]?></td>
  80. </tr>
  81. <tr>
  82. <td>温度</td>
  83. <td><?=$data["realtime"]["temperature"]?></td>
  84. </tr>
  85. <tr>
  86. <td>湿度</td>
  87. <td><?=$data["realtime"]["humidity"]?>%</td>
  88. </tr>
  89. <tr>
  90. <td>天气</td>
  91. <td><?=$data["realtime"]["info"]?></td>
  92. </tr>
  93. <tr>
  94. <td>风向</td>
  95. <td><?=$data["realtime"]["direct"]?></td>
  96. </tr>
  97. <tr>
  98. <td>风力</td>
  99. <td><?=$data["realtime"]["power"]?></td>
  100. </tr>
  101. <tr>
  102. <td>空气指数</td>
  103. <td><?=$data["realtime"]["aqi"]?>%</td>
  104. </tr>
  105. </table>
  106. <h5>未来几天天气</h5>
  107. <table class="table table-bordered table-hover">
  108. <?php foreach($data["future"] as $k=>$v){ ?>
  109. <tr>
  110. <td><?=$v["date"]?></td>
  111. <td>
  112. <p><?=$v["temperature"]?></p>
  113. <p><?=$v["weather"]?></p>
  114. <p><?=$v["direct"]?></p>
  115. </td>
  116. </tr>
  117. <?php } ?>
  118. </table>
  119. </div>
  120. <?php }elseif($res["error_code"] == '207301' || $res["error_code"] == '207302'){ ?>
  121. <div class="content">
  122. <blockquote>
  123. <p>没有查到相关信息!</p>
  124. </blockquote>
  125. </div>
  126. <?php }elseif($res["error_code"] == '10012' || $res["error_code"] == '10013'){ ?>
  127. <div class="content">
  128. <blockquote>
  129. <p>接口请求超过次数限制</p>
  130. </blockquote>
  131. </div>
  132. <?php } ?>
  133. <?php } ?>
  134. </div>
  135. </body>
  136. </html>

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • PHP中要怎么操作JSON?本篇文章带大家深入学习一下PHPJSON相关的,介绍一下使用这些需要注意的一些地方,希望对大家有所帮助!
    本文将继续介绍PHP JSON相关知识,正如标题所述,我将给大家介绍PHP使用cURL获取JSON据并解码的方法,感兴趣的可以继续往下看啊~
    php组转json是json_encode()。json_encode()可以对变量进行JSON编码,将其转换为json字符串据,语法格式“json_encode (value)”。
    php curl的用法:1、使用curl_init创建一个新cURL资源;2、通过curl_setopt设置URL和相应的选项;3、通过curl_exec抓取URL并把它传递给浏览器;4、使用curl_close
    json是一种轻量级的据交换格式,已经被绝大语言广泛使用,在php前端进行据交换便使用json格式的据,那么如何在php中将变量json格式相互转换,本文就带大家一起来看一看。
    上篇文章给大家介绍了《什么是PHP 过滤器?有那几种过滤器呢?​》,本文继续给大家介绍什么是PHP JSON()?本篇文章将会有一定的参考价值哦!
    这篇文章主要介绍了PHP字符串组处理用法,结合实例形式详细分析了PHP字符串组常用处理功能、定义、使用方法操作注意事项,需要的朋友可以参考下。
    本篇文章是对php正则表达式中的preg_matchpreg_match_all进行了分析介绍,需要的朋友参考下。
    curl获取到的json对象转成组的方法:首先创建一个;然后在中利用“curl”获取“json”对象;最后使用“json_decode”将获取到的“json”对象转成组即可。
    php时间相关的常用有:date_default_timezone_set()、date_create()、date_diff()、date_timestamp_get()、strtotime(
    php中字符串字符替换用str_replace()
    php substr是一种基于php语言开发的可以返回字符串的一部分的功能。有时候我们使用php substr会出现一些乱码问题,那该如何解决呢?
    本文带大家了解一下PHPhtml标签相关(htmlspecialchars、strip_tags、addslashes)。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
    json php中文乱码的解决办法:1、保证据库和前后台PHP页面编码一致;2、配置使用PHPurlencodeJSdecodeURI;3、使用字符串编码转换“iconv”。
    解决PHP JSON中文乱码的方法:1、保证据库、前后台PHP页面编码一致;2、配置使用PHP【urlencode】JSd【ecodeURI()】;3、使用字符串编码转换

    2020-10-12

    653

    phpjson的用法:json_encode()用于将组和对象转换为json格式;json_decode()用于将json文本转换为相应的php据结构,如【json_decode($json
    php实现json组的方法是:利用json_decode来实现,如【json_decode($json, true)】。该可以将JSON编码的字符串转换为适当的php据类型。
    php curl设置cookie的方法:1、创建PHP示例文件;2、通过curl_setopt设置cURL传输选项;3、在CURL中传递cookie即可。
    php json格式转换的方法:1、通过json_encodephp的array和object转换成json格式;2、通过json_decodejson文本转换为相应的PHP据结构。
    PHP组转换成JSON的方法:在PHP中可以通过使用“json_encode()”将组转为JSON,该的作用是对变量进行JSON编码,语法为“json_encode($val)”,返回值为