本文实例讲述了PHP自定义函数格式化json数据的方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
<?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程序设计有所帮助。