> 백엔드 개발 > PHP 튜토리얼 > php JSON 데이터 포맷팅 기능

php JSON 데이터 포맷팅 기능

WBOY
풀어 주다: 2016-07-25 08:56:25
원래의
1145명이 탐색했습니다.
本文分享一个php版的json数据格式化函数的例子,有需要的朋友,可以作个参考,借鉴下别人的写法。

将字符串形式的 JSON 数据格式化为缩进形式。通常使用 json_encode 转换出来的 JSON 串没有缩进。 有了本文分享的这个方法,就不用再担心这个问题了。 本代码: 默认使用了 tab 缩进,如果要改成空格,替换变量 $indentStr 即可。

代码:

<?php
/**
* Indents a flat JSON string to make it more human-readable.
* @param string $json The original JSON string to process.
* @return string Indented version of the original JSON string.
* @site bbs.it-home.org
*/
function indent ($json) {
 $result = '';
 $pos = 0;
 $strLen = strlen($json);
 $indentStr = ' ';
 $newLine = "\n";
 $prevChar = '';
 $outOfQuotes = true;

 for ($i=0; $i<=$strLen; $i++) {
  // Grab the next character in the string.
  $char = substr($json, $i, 1);
  // Are we inside a quoted string?
  if ($char == '"' && $prevChar != '\\') {
   $outOfQuotes = !$outOfQuotes;
   // If this character is the end of an element,
   // output a new line and indent the next line.
  } else if(($char == '}' || $char == ']') && $outOfQuotes) {
   $result .= $newLine;
   $pos --;
   for ($j=0; $j<$pos; $j++) {
    $result .= $indentStr;
   }
  }
  // Add the character to the result string.
  $result .= $char;
  // If the last character was the beginning of an element,
  // output a new line and indent the next line.
  if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
   $result .= $newLine;
   if ($char == '{' || $char == '[') {
    $pos ++;
   }
   for ($j = 0; $j < $pos; $j++) {
    $result .= $indentStr;
   }
  }
  $prevChar = $char;
 }
 return $result;
}
?>
로그인 후 복사


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿