PHP判断json格式是否正确的实现代码

本文给大家分享PHP判断json格式是否正确的实现代码,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧,废话不多说了,直接给大家贴代码了,具体代码如下所示:

  1. <?php
  2. $GLOBALS['count'] = 0;
  3. //校验data或者content的json格式是否有错误
  4. function data($value) {
  5. if (isset($value['data'])) {
  6. $value['data'] = json_decode($value['data'], true);
  7. } else if (isset($value['content'])) {
  8. $value['content'] = json_decode($value['content'], true);
  9. } else {
  10. die('必须要有content或者data字段');
  11. }
  12. $error = json_last_error();
  13. if (!emptyempty($error)) {
  14. echo "<pre>";
  15. print_r($value);
  16. echo "</pre>";
  17. }
  18. return $value;
  19. }
  20. //校验静态资源是否存在;
  21. function my_filter($value) {
  22. $needle = ['.jpg', '.jpeg', '.png', '.avi', '.mp4', '.wav', '.gif', '.mp3'];
  23. $root = 'D:/phpStudy/WWW/levelData/';
  24. foreach ($needle as $k => $v) {
  25. $aa = strpos($value, $v);
  26. if ($aa) {
  27. $file = $root . $value;
  28. if (!file_exists($file)) {
  29. $GLOBALS['count']++;
  30. return $value;
  31. }
  32. }
  33. }
  34. }
  35. //获取多维数组里面某一列的下标,并重新组成一维数组
  36. function searchMultiArray(array $array, $search, $mode = 'key') {
  37. $res = array();
  38. foreach (new RecursiveIteratorIterator(new RecursiveArrayIterator($array)) as $key => $value) {
  39. if ($search === ${${"mode"}}) {
  40. if ($mode == 'key') {
  41. $res[] = $value;
  42. } else {
  43. $res[] = $key;
  44. }
  45. }
  46. }
  47. return $res;
  48. }
  49. function my_filter_answer($value) {
  50. $needle = [',', '、', ' ', '.', ',,', ',,'];
  51. foreach ($needle as $k => $v) {
  52. $aa = strpos($value, $v);
  53. if ($aa) {
  54. return 1;
  55. }
  56. }
  57. }
  58. //将汉字,特殊字符原样变成json数据
  59. function ch_json_encode($data) {
  60. $ret = ch_urlencode($data);
  61. $ret = json_encode($ret);
  62. return '\'' . addslashes(urldecode($ret)) . '\'';
  63. }
  64. //汉字,特殊字符变可读懂的字符串主程序
  65. function ch_urlencode($data) {
  66. if (is_array($data) || is_object($data)) {
  67. foreach ($data as $k => $v) {
  68. if (is_scalar($v)) {
  69. if (is_array($data)) {
  70. $data[$k] = urlencode($v);
  71. } else if (is_object($data)) {
  72. $data->$k = urlencode($v);
  73. }
  74. } else if (is_array($data)) {
  75. $data[$k] = ch_urlencode($v); // 递归调用该函数
  76. } else if (is_object($data)) {
  77. $data->$k = ch_urlencode($v);
  78. }
  79. }
  80. }
  81. return $data;
  82. }