Home  >  Article  >  Backend Development  >  Share a PHP version of JSON data formatting function_PHP tutorial

Share a PHP version of JSON data formatting function_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 14:58:31841browse

I saw a piece of code on Mango Station today and I thought it was pretty good, so I reposted it. The following is the original text.

Format JSON data in string form to be indented. Usually, the JSON string converted using json_encode is not indented. This method is much better.
Here I use tab indentation by default. If you want to change it to spaces, just replace the variable $indentStr.

/**
* 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.
*/
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;

}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/363833.htmlTechArticleI saw a piece of code on Mango Station today and I thought it was pretty good, so I reposted it. The following is the original text. Format JSON data as a string to be indented. Usually use json...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn