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 相关文章推荐
Windows下XDebug 手工配置与使用说明
Jul 11 PHP
PHP和.net中des加解密的实现方法
Feb 27 PHP
wamp下修改mysql访问密码的解决方法
May 07 PHP
PHP中strtr字符串替换用法详解
Nov 26 PHP
PHP SPL标准库中的常用函数介绍
May 11 PHP
PHP中模拟链表和链表的基本操作示例
Feb 27 PHP
php的PDO事务处理机制实例分析
Feb 16 PHP
简单实现php上传文件功能
Sep 21 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
PHP simplexml_load_file()函数讲解
Feb 03 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
Mar 23 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中循环语句的用法介绍
2012/01/30 PHP
php 深入理解strtotime函数的使用详解
2013/05/23 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
理解Javascript_13_执行模型详解
2010/10/20 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
关于textarea提交的内容无法换行的解决办法
2013/04/09 Javascript
jQuery之日期选择器的深入解析
2013/06/19 Javascript
JS判断表单输入是否为空(示例代码)
2013/12/23 Javascript
checkbox全选所涉及到的知识点介绍
2013/12/31 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
webstorm添加vue.js支持的方法教程
2017/07/05 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
Python专用方法与迭代机制实例分析
2014/09/15 Python
Python实现简单的语音识别系统
2017/12/13 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
汽车工程专业应届生求职信
2013/10/19 职场文书
初婚未育证明
2014/01/15 职场文书
工作表现自我评价
2014/02/08 职场文书
给校长的建议书300字
2014/05/16 职场文书
年会邀请函范文
2015/01/30 职场文书
学校节水倡议书
2015/04/29 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书