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的header和asp中的redirect比较
Oct 09 PHP
php中防止伪造跨站请求的小招式
Sep 02 PHP
关于PHP递归算法和应用方法介绍
Apr 15 PHP
利用curl 多线程 模拟 并发的详解
Jun 14 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
php实现处理输入转义字符的代码
Nov 08 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
PHP脚本的10个技巧(8)
2006/10/09 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
PHP中str_split()函数的用法讲解
2019/04/11 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
基于JavaScript实现移除(删除)数组中指定元素
2016/01/04 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
JS实现根据数组对象的某一属性排序操作示例
2019/01/14 Javascript
[03:07]完美世界DOTA2联赛PWL DAY10 决赛集锦
2020/11/11 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
浅谈Python基础之I/O模型
2017/05/11 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
对Python subprocess.Popen子进程管道阻塞详解
2018/10/29 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
HTML5 3D衣服摇摆动画特效
2016/03/17 HTML / CSS
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
焊接专业毕业生求职信
2013/10/01 职场文书
理工科学生的自我评价
2013/12/15 职场文书
篮球比赛拉拉队口号
2014/06/10 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
员工担保书范本
2015/09/22 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
python基础之模块的导入
2021/10/24 Python