mb_ereg_variation4.phpt 3.0 KB

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