mb_ereg_variation4.phpt 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. --TEST--
  2. Test mb_ereg() function : usage variations - pass different character classes as pattern for multibyte string
  3. --SKIPIF--
  4. <?php
  5. extension_loaded('mbstring') or die('skip');
  6. function_exists('mb_ereg') or die("skip mb_ereg() is not available in this build");
  7. ?>
  8. --FILE--
  9. <?php
  10. /* Prototype : int mb_ereg(string $pattern, string $string [, array $registers])
  11. * Description: Regular expression match for multibyte string
  12. * Source code: ext/mbstring/php_mbregex.c
  13. */
  14. /*
  15. * Test how character classes match a multibyte string
  16. */
  17. echo "*** Testing mb_ereg() : usage variations ***\n";
  18. mb_regex_encoding('utf-8');
  19. //contains japanese characters, ASCII digits and different, UTF-8 encoded digits
  20. $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=');
  21. $character_classes = array (b'[[:alnum:]]+', /*1*/
  22. b'[[:alpha:]]+',
  23. b'[[:ascii:]]+',
  24. b'[[:blank:]]+',
  25. b'[[:cntrl:]]+',/*5*/
  26. b'[[:digit:]]+',
  27. b'[[:graph:]]+',
  28. b'[[:lower:]]+',
  29. b'[[:print:]]+',
  30. b'[[:punct:]]+', /*10*/
  31. b'[[:space:]]+',
  32. b'[[:upper:]]+',
  33. b'[[:xdigit:]]+'); /*13*/
  34. $iterator = 1;
  35. foreach ($character_classes as $pattern) {
  36. if (is_array(@$regs)) {
  37. $regs = null;
  38. }
  39. echo "\n-- Iteration $iterator --\n";
  40. var_dump(mb_ereg($pattern, $string_mb, $regs));
  41. if ($regs) {
  42. base64_encode_var_dump($regs);
  43. }
  44. $iterator++;
  45. }
  46. /**
  47. * replicate a var dump of an array but outputted string values are base64 encoded
  48. *
  49. * @param array $regs
  50. */
  51. function base64_encode_var_dump($regs) {
  52. if ($regs) {
  53. echo "array(" . count($regs) . ") {\n";
  54. foreach ($regs as $key => $value) {
  55. echo " [$key]=>\n ";
  56. if (is_string($value)) {
  57. var_dump(base64_encode($value));
  58. } else {
  59. var_dump($value);
  60. }
  61. }
  62. echo "}\n";
  63. } else {
  64. echo "NULL\n";
  65. }
  66. }
  67. echo "Done";
  68. ?>
  69. --EXPECTF--
  70. *** Testing mb_ereg() : usage variations ***
  71. -- Iteration 1 --
  72. int(47)
  73. array(1) {
  74. [0]=>
  75. string(64) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZMDEyMzTvvJXvvJbvvJfvvJjvvJk="
  76. }
  77. -- Iteration 2 --
  78. int(27)
  79. array(1) {
  80. [0]=>
  81. string(36) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ"
  82. }
  83. -- Iteration 3 --
  84. int(5)
  85. array(1) {
  86. [0]=>
  87. string(8) "MDEyMzQ="
  88. }
  89. -- Iteration 4 --
  90. bool(false)
  91. -- Iteration 5 --
  92. bool(false)
  93. -- Iteration 6 --
  94. int(20)
  95. array(1) {
  96. [0]=>
  97. string(28) "MDEyMzTvvJXvvJbvvJfvvJjvvJk="
  98. }
  99. -- Iteration 7 --
  100. int(50)
  101. array(1) {
  102. [0]=>
  103. string(68) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  104. }
  105. -- Iteration 8 --
  106. bool(false)
  107. -- Iteration 9 --
  108. int(50)
  109. array(1) {
  110. [0]=>
  111. string(68) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
  112. }
  113. -- Iteration 10 --
  114. int(3)
  115. array(1) {
  116. [0]=>
  117. string(4) "44CC"
  118. }
  119. -- Iteration 11 --
  120. bool(false)
  121. -- Iteration 12 --
  122. bool(false)
  123. -- Iteration 13 --
  124. int(5)
  125. array(1) {
  126. [0]=>
  127. string(8) "MDEyMzQ="
  128. }
  129. Done