json_decode_invalid_utf8.phpt 976 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. --TEST--
  2. json_decode() invalid UTF8
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded("json")) print "skip";
  6. ?>
  7. --FILE--
  8. <?php
  9. function json_decode_invalid_utf8($str) {
  10. var_dump(json_decode($str));
  11. var_dump(json_decode($str, true, 512, JSON_INVALID_UTF8_IGNORE));
  12. $json = json_decode($str, true, 512, JSON_INVALID_UTF8_SUBSTITUTE);
  13. if (is_array($json)) {
  14. var_dump(array_map(function($item) { return bin2hex($item); }, $json));
  15. } else {
  16. var_dump(bin2hex($json));
  17. }
  18. }
  19. json_decode_invalid_utf8("\"a\xb0b\"");
  20. json_decode_invalid_utf8("\"a\xd0\xf2b\"");
  21. json_decode_invalid_utf8("\"\x61\xf0\x80\x80\x41\"");
  22. json_decode_invalid_utf8("[\"\xc1\xc1\",\"a\"]");
  23. echo "Done\n";
  24. ?>
  25. --EXPECT--
  26. NULL
  27. string(2) "ab"
  28. string(10) "61efbfbd62"
  29. NULL
  30. string(2) "ab"
  31. string(16) "61efbfbdefbfbd62"
  32. NULL
  33. string(2) "aA"
  34. string(22) "61efbfbdefbfbdefbfbd41"
  35. NULL
  36. array(2) {
  37. [0]=>
  38. string(0) ""
  39. [1]=>
  40. string(1) "a"
  41. }
  42. array(2) {
  43. [0]=>
  44. string(12) "efbfbdefbfbd"
  45. [1]=>
  46. string(2) "61"
  47. }
  48. Done