search_json_pretty.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. $l = '';
  3. while($f = fgets(STDIN))
  4. {
  5. $l = $l . $f;
  6. }
  7. //print ( $l );
  8. $jin = json_decode ( $l, true );
  9. if ( $jin===null && json_last_error()!==JSON_ERROR_NONE )
  10. {
  11. $err = json_last_error_msg();
  12. print ("json\n$l");
  13. exit ( "\ndecode error: '$err'" );
  14. }
  15. $attrs = $jin['attrs'];
  16. $matches = $jin['matches'];
  17. $meta = $jin['meta'];
  18. $res_match = array();
  19. foreach ( $matches as $row )
  20. {
  21. $named_val = array();
  22. for( $i = 0; $i<count($attrs); $i++ )
  23. {
  24. $name = $attrs[$i];
  25. $val = $row[$i];
  26. $named_val[$name] = $val;
  27. }
  28. $res_match[] = $named_val;
  29. }
  30. function print_json_row ( $j, $name )
  31. {
  32. if ( !count($j) )
  33. {
  34. print ( "$name:[]\n" );
  35. return;
  36. }
  37. print ( "$name:\n[" );
  38. $row_sep = "";
  39. foreach ( $j as $row )
  40. {
  41. print ( "$row_sep\t" );
  42. $val_sep = "";
  43. print ( json_encode ( $row ) );
  44. $row_sep = ",\n";
  45. }
  46. print ( "\n]" );
  47. }
  48. print ( "{\n" );
  49. print_json_row ( $res_match, "\"matches\"" );
  50. print ( ",\n\"meta\":\n" );
  51. print ( json_encode ( $meta, JSON_PRETTY_PRINT ) );
  52. print ( "\n" );
  53. if ( isset ( $jin['warning'] ) )
  54. print ( "\"warning\": " . $jin['warning'] );
  55. if ( isset ( $jin['error'] ) )
  56. print ( "\"error\": " . $jin['error'] );
  57. print ( "}\n" );
  58. ?>