PHP自定义函数格式化json数据示例


Posted in PHP onSeptember 14, 2016

本文实例讲述了PHP自定义函数格式化json数据的方法。分享给大家供大家参考,具体如下:

<?php
  /**
   * Formats a JSON string for pretty printing
   *
   * @param string $json The JSON to make pretty
   * @param bool $html Insert nonbreaking spaces and <br />s for tabs and linebreaks
   * @return string The prettified output
   */
$arr = array("ret"=>0,"data"=>array('a' => 1, 'b' => "三水点靠木", 'c' => 3, 'd' => 4, 'e' => 5));
$json = json_encode($arr);
function _format_json($json, $html = false) {
    $tabcount = 0;
    $result = '';
    $inquote = false;
    $ignorenext = false;
    if ($html) {
      $tab = "   ";
      $newline = "<br/>";
    } else {
      $tab = "\t";
      $newline = "\n";
    }
    for($i = 0; $i < strlen($json); $i++) {
      $char = $json[$i];
      if ($ignorenext) {
        $result .= $char;
        $ignorenext = false;
      } else {
        switch($char) {
          case '{':
            $tabcount++;
            $result .= $char . $newline . str_repeat($tab, $tabcount);
            break;
          case '}':
            $tabcount--;
            $result = trim($result) . $newline . str_repeat($tab, $tabcount) . $char;
            break;
          case ',':
            $result .= $char . $newline . str_repeat($tab, $tabcount);
            break;
          case '"':
            $inquote = !$inquote;
            $result .= $char;
            break;
          case '\\':
            if ($inquote) $ignorenext = true;
            $result .= $char;
            break;
          default:
            $result .= $char;
        }
      }
    }
    return $result;
  }
echo _format_json($json);
/*
{
  "ret": 0,
  "data": {
    "a": 1,
    "b": "\u811a\u672c\u4e4b\u5bb6",
    "c": 3,
    "d": 4,
    "e": 5
  }
}
**/
?>
PHP 相关文章推荐
最新的php 文件上传模型,支持多文件上传
Aug 13 PHP
收集的二十一个实用便利的PHP函数代码
Apr 22 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
Mar 12 PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 PHP
smarty模板引擎中变量及变量修饰器用法实例
Jan 22 PHP
Codeigniter发送邮件的方法
Mar 19 PHP
PHP实现的多文件上传类及用法示例
May 06 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
ThinkPHP中类的构造函数_construct()与_initialize()的区别详解
Mar 13 PHP
laravel 自定义常量的两种方案
Oct 14 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 PHP
ThinkPHP中session函数详解
Sep 14 #PHP
PHP大神的十大优良习惯
Sep 14 #PHP
thinkPHP的表达式查询用法详解
Sep 14 #PHP
PHP实现对二维数组某个键排序的方法
Sep 14 #PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 #PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
Sep 14 #PHP
PHP自定义函数实现格式化秒的方法
Sep 14 #PHP
You might like
PHP 手机归属地查询 api
2010/02/08 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
2015/07/17 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
Vue中jsx不完全应用指南小结
2019/11/01 Javascript
[02:27]《DAC最前线》之附加赛征程
2015/01/29 DOTA
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
Python中super函数的用法
2017/11/17 Python
python logging重复记录日志问题的解决方法
2018/07/12 Python
Python 图片处理库exifread详解
2021/02/25 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
html如何对span设置宽度
2019/10/30 HTML / CSS
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
什么是反射?如何实现反射?
2016/07/25 面试题
信息管理专业推荐信
2013/10/29 职场文书
办公室文员自荐书
2014/02/03 职场文书
大学生个人求职信例文
2014/07/07 职场文书
公司承诺书格式范文
2015/04/28 职场文书
Jupyter Notebook内使用argparse报错的解决方案
2021/06/03 Python
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python