mb_ereg_variation7.phpt 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. --TEST--
  2. Test mb_ereg() function : usage variations - different regex features in $pattern
  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. * Testing the following regular expression features match correctly:
  16. * 1. definite quantifiers
  17. * 2. Alternation
  18. * 3. subpatterns in parentheses
  19. */
  20. echo "*** Testing mb_ereg() : usage variations ***\n";
  21. if(mb_regex_encoding('utf-8') == true) {
  22. echo "Regex encoding set to utf-8\n";
  23. } else {
  24. echo "Could not set regex encoding to utf-8\n";
  25. }
  26. $string_ascii = b'This is an English string. 0123456789.';
  27. $regex_ascii = b'([A-Z]\w{1,4}is( [aeiou]|h)) ?.*\.\s[0-9]+(5([6-9][79]){2})[[:punct:]]$';
  28. var_dump(mb_ereg($regex_ascii, $string_ascii, $regs_ascii));
  29. base64_encode_var_dump($regs_ascii);
  30. $string_mb = base64_decode('zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg==');
  31. $regex_mb = base64_decode("W86RLc6pXShcdysgKSvOtVvOsS3PiVxzXSvOui4qKM+MfM6/KS4qXC5cc1swLTldKyg1KFs2LTldWzc5XSl7Mn0pW1s6cHVuY3Q6XV0k");
  32. var_dump(mb_ereg($regex_mb, $string_mb, $regs_mb));
  33. base64_encode_var_dump($regs_mb);
  34. /**
  35. * replicate a var dump of an array but outputted string values are base64 encoded
  36. *
  37. * @param array $regs
  38. */
  39. function base64_encode_var_dump($regs) {
  40. if ($regs) {
  41. echo "array(" . count($regs) . ") {\n";
  42. foreach ($regs as $key => $value) {
  43. echo " [$key]=>\n ";
  44. if (is_string($value)) {
  45. var_dump(base64_encode($value));
  46. } else {
  47. var_dump($value);
  48. }
  49. }
  50. echo "}\n";
  51. } else {
  52. echo "NULL\n";
  53. }
  54. }
  55. echo "Done";
  56. ?>
  57. --EXPECT--
  58. *** Testing mb_ereg() : usage variations ***
  59. Regex encoding set to utf-8
  60. int(38)
  61. array(5) {
  62. [0]=>
  63. string(52) "VGhpcyBpcyBhbiBFbmdsaXNoIHN0cmluZy4gMDEyMzQ1Njc4OS4="
  64. [1]=>
  65. string(8) "VGhpcyBp"
  66. [2]=>
  67. string(4) "IGk="
  68. [3]=>
  69. string(8) "NTY3ODk="
  70. [4]=>
  71. string(4) "ODk="
  72. }
  73. int(64)
  74. array(5) {
  75. [0]=>
  76. string(88) "zpHPhc+Ez4wgzrXOr869zrHOuSDOtc67zrvOt869zrnOus+MIM66zrXOr868zrXOvc6/LiAwMTIzNDU2Nzg5Lg=="
  77. [1]=>
  78. string(16) "zrXOr869zrHOuSA="
  79. [2]=>
  80. string(4) "zr8="
  81. [3]=>
  82. string(8) "NTY3ODk="
  83. [4]=>
  84. string(4) "ODk="
  85. }
  86. Done