007.phpt 868 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. --TEST--
  2. preg_replace_callback() with callback that modifies subject string
  3. --SKIPIF--
  4. <?php
  5. if (@preg_match('/./u', '') === false) {
  6. die('skip no utf8 support in PCRE library');
  7. }
  8. ?>
  9. --FILE--
  10. <?php
  11. function evil($x) {
  12. global $txt;
  13. $txt[3] = "\xFF";
  14. var_dump($x);
  15. return $x[0];
  16. }
  17. $txt = "ola123";
  18. var_dump(preg_replace_callback('#.#u', 'evil', $txt));
  19. var_dump($txt);
  20. var_dump(preg_last_error() == PREG_NO_ERROR);
  21. var_dump(preg_replace_callback('#.#u', 'evil', $txt));
  22. var_dump(preg_last_error() == PREG_BAD_UTF8_ERROR);
  23. echo "Done!\n";
  24. ?>
  25. --EXPECT--
  26. array(1) {
  27. [0]=>
  28. string(1) "o"
  29. }
  30. array(1) {
  31. [0]=>
  32. string(1) "l"
  33. }
  34. array(1) {
  35. [0]=>
  36. string(1) "a"
  37. }
  38. array(1) {
  39. [0]=>
  40. string(1) "1"
  41. }
  42. array(1) {
  43. [0]=>
  44. string(1) "2"
  45. }
  46. array(1) {
  47. [0]=>
  48. string(1) "3"
  49. }
  50. string(6) "ola123"
  51. string(6) "olaÿ23"
  52. bool(true)
  53. NULL
  54. bool(true)
  55. Done!