今日 Mango Station のコードを見て、とても良いと思ったので再投稿しました。以下が原文です。
文字列形式の JSON データをインデント形式にフォーマットします。通常、json_encode を使用して変換された JSON 文字列はインデントされません。この方法の方がはるかに優れています。
ここではデフォルトでタブインデントを使用しています。スペースに変更したい場合は、変数 $indentStr を置き換えるだけです。
/**
* フラットな JSON 文字列をインデントして、人間が読みやすいようにします。
* @param string $json 処理する元の JSON 文字列。
* @return string 元の JSON 文字列のインデントされたバージョン。
*/
関数 indent ($json) {
$pos = 0;
$strLen = strlen($json); $newLine = "n";
$prevChar = '';
$outOfQuotes = true;
for ($i=0; $i<=$strLen; $i++) {
// string.
$char = substr($json, $i, 1);
// 引用符で囲まれた文字列内ですか?
if ($char == '"' && $prevChar != '\') {
$outOfQuotes = !$outOfQuotes;
// この文字が要素の末尾の場合、
// 新しい行を出力し、次の行をインデントします
} else if(($char == '}' || $char == ']') && $outOfQuotes) {
$result .= $newLine;
$pos --;
for ($j=0; $j$result .= $indentStr; }
}
// 結果の文字列に文字を追加します。
$result .= $char;
// 最後の文字が要素の先頭である場合、
// 新しい行を出力し、次の行をインデントします。 if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) {
$result .= $newLine
if ($char == '; {' || $char == '[') {
$pos ++;
for ($j = 0; $j $result .= $indentStr;
}
$prevChar = $char
}
$result を返す
}
http://www.bkjia.com/PHPjc/363833.html
www.bkjia.com
http://www.bkjia.com/PHPjc/363833.html