mb_check_encoding_array.phpt 1002 B

12345678910111213141516171819202122232425262728293031
  1. --TEST--
  2. mb_check_encoding() - Circular references
  3. --SKIPIF--
  4. <?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
  5. --FILE--
  6. <?php
  7. ini_set('default_charset', 'UTF-8');
  8. // Valid - Detects recursion
  9. $str = "Japanese UTF-8 text. 日本語のUTF-8テキスト";
  10. $arr = [1234, 12.34, TRUE, FALSE, NULL, $str, 'key'=>$str, $str=>'val'];
  11. $tmp = &$arr;
  12. $arr[] = $tmp;
  13. var_dump(mb_check_encoding($str), mb_check_encoding($arr));
  14. // Invalid - Return false due to short circuit check
  15. $str = "Japanese UTF-8 text. 日本語\xFE\x01\x02のUTF-8テキスト";
  16. $arr1 = [1234, 12.34, TRUE, FALSE, NULL, 'key'=>$str, $str=>'val'];
  17. $tmp = &$arr1;
  18. $arr1[] = $tmp;
  19. $arr2 = [1234, 12.34, TRUE, FALSE, NULL, $str=>'val'];
  20. $tmp = &$arr2;
  21. $arr2[] = $tmp;
  22. var_dump(mb_check_encoding($str), mb_check_encoding($arr1), mb_check_encoding($arr2));
  23. ?>
  24. --EXPECTF--
  25. Warning: mb_check_encoding(): Cannot not handle circular references in %s on line %d
  26. bool(true)
  27. bool(false)
  28. bool(false)
  29. bool(false)
  30. bool(false)