php 生成JSON数据的例子

 更新时间:2016年11月25日 15:41  点击:2230
在php中要生成JSON数据是非常的简单的我们只要把数组利用json_encode函数就可以转换了,但在使用过程中会碰到中文乱码或中文为null我们直接使用utf-8编码就可以解决此问题了。

折腾了好久主题

结果发现本地搭的有问题

索性不折腾了?(?^?)?

在百度贴吧里POST的时候

经常要通过JSON获取一些值

那么PHP如何实现输出JSON数据呢?

其实PHP里已经有'json_encode'函数了

 代码如下 复制代码
<?php
$array = array(
'Newest_Ver' => 'None',
'API_List' => 'http://www.111cn.net/',
'Announcement' => 'None'
);
$result = json_encode($array);
echo $result;
?>

直接使用json_encode转换出来的中文会变成NULL的,urlencode后就不存在这个问题了。

json数据为乱码

生成json字符串的时候只能使用utf-8。不过可以用下面这个函数先实现utf8数组转码然后在直接使用json_encode():

 代码如下 复制代码

function output($arr = array()) {    return eval('return ' . iconv('GB2312', 'UTF-8', var_export($arr, true)) . ';');}

今天在做公司的项目的时候,遇到一个问题,群聊天记录存入数据库的时候把聊天记录及央视使用16进制转换,我在做将聊天记录导出为text文本的时候,需要将聊天记录先从16进制转换为普通的Unicode编码记录

然后在从中取出所需要导出的message信息,不多说了,代码如下,以下代码属于线下的,线上的就不透漏了,算是一篇非常的简单的php教程吧:

 代码如下 复制代码

<?php
/*将16进制编码转换为汉字*/
function hexDecode($s) {
    return preg_replace('/(w{2})/e',"chr(hexdec('\1'))",$s);
}
/*汉字转换成16进制后的编码*/
$str="7B22636F6E74726F6C223A22343AE5AE8BE4
BD932C422C302C30222C22657874656E6469
6E666F223A22323031343033323731383
53335397C307C7EE4B88DE8A681E68993E985B1
E6B2B97E222C22657874656E6474
797065223A22222C2274
797065223A226E6F726D616C6D7367
222C226D7367223A2261
646720227D"; www.111cn.net
$a=hexDecode($str);//调用反转换函数转换16进制
echo $a;//输出{"control":"4:宋体,B,0,0","extendinfo":"20140327185359|0|~不要打酱油~","extendtype":"","type":"normalmsg","msg":"adg "}
$a = json_decode($a);
echo($a->msg);//取出msg字段信息
?>

屏蔽电话号码中间数字这个我们在一些购物网站常见到的手法了,下面我利用正则表达式来实现,具体原理我也不说多了大家都知道的,这里直接给例子。

函数

 代码如下 复制代码

function hidtel($phone){
    $IsWhat = preg_match('/(0[0-9]{2,3}[-]?[2-9][0-9]{6,7}[-]?[0-9]?)/i',$phone); //固定电话
    if($IsWhat == 1){
        return preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);
    }else{
        return  preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);
    }
}

示例:

$phonenum = "13966778888";
echo hidtel($phonenum);
最后输出:www.111cn.net 139****8888

例子

1、屏蔽手机号码中间段:

 代码如下 复制代码

preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);

2、屏蔽固定电话中间段:

 代码如下 复制代码

preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);

例如:

 代码如下 复制代码

$phone = '010-88888888-8';
$phone1 = '13888888888';

$phone = preg_replace('/(0[0-9]{2,3}[-]?[2-9])[0-9]{3,4}([0-9]{3}[-]?[0-9]?)/i','$1****$2',$phone);
$phone1 = preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone1);

echo $phone,'<br>www.111Cn.net';
echo $phone1,'<br>';

结果输出:

138****8888
010-8****888

 

下面用php实现了一个对css进行压缩和解压缩的小程序,暂不适用于js的操作。通过这个案例可以学习php字符替换和正则替换的技术。

将css代码压缩能够减小文件的体积,从而减小了网络传输量和带宽占用,减小了服务器的处理的压力


源码:

 代码如下 复制代码


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>

<?php 

$string = trim(stripslashes($_POST['code'])); //stripslashes()函数删除转义字符(反斜杠)

if(!empty($string)){

if($_POST['method'] == '压缩' ){

$string = css_compress($string);

}elseif($_POST['method'] == '解压缩' ){

$string = css_decompress($string);

}

}else{

$string = '';

}

function css_compress($string){

//压缩

$string = str_replace("\r\n","",$string); //首先去掉换行

$string = preg_replace("/(\s*\{\s*)/","{",$string);

$string = preg_replace("/(\s*\;\s*\}\s*)/","}",$string); //去掉反括号首位的空格和换行,和最后一个;

$string = preg_replace("/(\s*\;\s*)/",";",$string);

return $string;

}

function css_decompress($string){

//解压

$string = css_compress($string); //为了效果更好,解压前,先压缩至最简状态

$string = str_replace("{","\r\n{\r\n\t",$string);

$string = str_replace("}","\r\n}\r\n\r\n",$string); 

$string = str_replace(";",";\r\n\t",$string);

$string = str_replace("*/","*/\r\n",$string);

return $string;

}

?>

<body>

  <div style="width:800px;height:500px;text-align:center">

  <p><strong>请将css代码粘贴到下面框中,然后选择压缩/解压缩</strong></p>

  <form action="" method="post" name="css_code">

    <textarea style="width:90%;height:460px;padding:5px;" name="code"><?php echo $string; ?></textarea>

    <br />

    <input type="submit" name="method" value="压缩" />

    <input type="submit" name="method" value="解压缩" />

  </form>

  </div>

</body>

</html>

一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,格式如下:

可见请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。

Http请求方法和响应状态吗整理
HTTP请求方法:

    GET: 请求指定的页面信息,并返回实体主体。
    HEAD: 只请求页面的首部。
    POST: 请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
    PUT: 从客户端向服务器传送的数据取代指定的文档的内容。
    DELETE: 请求服务器删除指定的页面。
    OPTIONS: 允许客户端查看服务器的性能。
    TRACE: 请求服务器在响应中的实体主体部分返回所得到的内容。
    PATCH: 实体中包含一个表,表中说明与该URI所表示的原内容的区别。
    MOVE: 请求服务器将指定的页面移至另一个网络地址。
    COPY: 请求服务器将指定的页面拷贝至另一个网络地址。
    LINK: 请求服务器建立链接关系。
    UNLINK: 断开链接关系。
    WRAPPED: 允许客户端发送经过封装的请求。
    Extension-mothed:在不改动协议的前提下,可增加另外的方法。


HTTP响应状态码:
① 客户方错误
100  继续
101  交换协议
② 成功
200  OK
201  已创建
202  接收
203  非认证信息
204  无内容
205  重置内容
206  部分内容
③ 重定向
300  多路选择
301  永久转移
302  暂时转移
303  参见其它
304  未修改(Not Modified)
305  使用代理
④ 客户方错误
400  错误请求(Bad Request)
401  未认证
402  需要付费
403  禁止(Forbidden)
404  未找到(Not Found)
405  方法不允许
406  不接受
407  需要代理认证
408  请求超时
409  冲突
410  失败
411  需要长度
412  条件失败
413  请求实体太大
414  请求URI太长
415  不支持媒体类型
⑤ 服务器错误
500  服务器内部错误
501  未实现(Not Implemented)
502  网关失败
504  网关超时
505 HTTP版本不支持

[!--infotagslink--]

相关文章

  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • php简单数据操作的实例

    最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
  • 解决Mybatis 大数据量的批量insert问题

    这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
  • Antd-vue Table组件添加Click事件,实现点击某行数据教程

    这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17
  • gin 获取post请求的json body操作

    这篇文章主要介绍了gin 获取post请求的json body操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-15
  • 详解如何清理redis集群的所有数据

    这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
  • 详解Mysql中的JSON系列操作函数

    新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
  • Json格式详解

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成...2021-11-05
  • vue 获取到数据但却渲染不到页面上的解决方法

    这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
  • C#使用Http Post方式传递Json数据字符串调用Web Service

    这篇文章主要为大家详细介绍了C#使用Http Post方式传递Json数据字符串调用Web Service,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • mybatis-plus 处理大数据插入太慢的解决

    这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
  • js遍历json的key和value的实例

    下面小编就为大家带来一篇js遍历json的key和value的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-01-26
  • postgresql数据添加两个字段联合唯一的操作

    这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • php二维码生成

    本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
  • Java生成随机姓名、性别和年龄的实现示例

    这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
  • 详解.NET Core 3.0 里新的JSON API

    这篇文章主要介绍了详解.NET Core 3.0 里新的JSON API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • Vue生命周期activated之返回上一页不重新请求数据操作

    这篇文章主要介绍了Vue生命周期activated之返回上一页不重新请求数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
  • C#生成随机数功能示例

    这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • c# socket网络编程接收发送数据示例代码

    这篇文章主要介绍了c# socket网络编程,server端接收,client端发送数据,大家参考使用吧...2020-06-25