Annotation of embedaddon/php/ext/mbstring/tests/mb_ereg_variation4.phpt, revision 1.1
1.1 ! misho 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: /*
! 16: * Test how character classes match a multibyte string
! 17: */
! 18:
! 19: echo "*** Testing mb_ereg() : usage variations ***\n";
! 20:
! 21: mb_regex_encoding('utf-8');
! 22:
! 23: //contains japanese characters, ASCII digits and different, UTF-8 encoded digits
! 24: $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=');
! 25:
! 26: $character_classes = array (b'[[:alnum:]]+', /*1*/
! 27: b'[[:alpha:]]+',
! 28: b'[[:ascii:]]+',
! 29: b'[[:blank:]]+',
! 30: b'[[:cntrl:]]+',/*5*/
! 31: b'[[:digit:]]+',
! 32: b'[[:graph:]]+',
! 33: b'[[:lower:]]+',
! 34: b'[[:print:]]+',
! 35: b'[[:punct:]]+', /*10*/
! 36: b'[[:space:]]+',
! 37: b'[[:upper:]]+',
! 38: b'[[:xdigit:]]+'); /*13*/
! 39:
! 40: $iterator = 1;
! 41: foreach ($character_classes as $pattern) {
! 42: if (is_array(@$regs)) {
! 43: $regs = null;
! 44: }
! 45: echo "\n-- Iteration $iterator --\n";
! 46: var_dump(mb_ereg($pattern, $string_mb, $regs));
! 47: if ($regs) {
! 48: base64_encode_var_dump($regs);
! 49: }
! 50: $iterator++;
! 51: }
! 52: /**
! 53: * replicate a var dump of an array but outputted string values are base64 encoded
! 54: *
! 55: * @param array $regs
! 56: */
! 57: function base64_encode_var_dump($regs) {
! 58: if ($regs) {
! 59: echo "array(" . count($regs) . ") {\n";
! 60: foreach ($regs as $key => $value) {
! 61: echo " [$key]=>\n ";
! 62: if (is_string($value)) {
! 63: var_dump(base64_encode($value));
! 64: } else {
! 65: var_dump($value);
! 66: }
! 67: }
! 68: echo "}\n";
! 69: } else {
! 70: echo "NULL\n";
! 71: }
! 72: }
! 73: echo "Done";
! 74:
! 75: ?>
! 76: --EXPECTF--
! 77: *** Testing mb_ereg() : usage variations ***
! 78:
! 79: -- Iteration 1 --
! 80: int(47)
! 81: array(1) {
! 82: [0]=>
! 83: string(64) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZMDEyMzTvvJXvvJbvvJfvvJjvvJk="
! 84: }
! 85:
! 86: -- Iteration 2 --
! 87: int(27)
! 88: array(1) {
! 89: [0]=>
! 90: string(36) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ"
! 91: }
! 92:
! 93: -- Iteration 3 --
! 94: int(5)
! 95: array(1) {
! 96: [0]=>
! 97: string(8) "MDEyMzQ="
! 98: }
! 99:
! 100: -- Iteration 4 --
! 101: bool(false)
! 102:
! 103: -- Iteration 5 --
! 104: bool(false)
! 105:
! 106: -- Iteration 6 --
! 107: int(20)
! 108: array(1) {
! 109: [0]=>
! 110: string(28) "MDEyMzTvvJXvvJbvvJfvvJjvvJk="
! 111: }
! 112:
! 113: -- Iteration 7 --
! 114: int(50)
! 115: array(1) {
! 116: [0]=>
! 117: string(68) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
! 118: }
! 119:
! 120: -- Iteration 8 --
! 121: bool(false)
! 122:
! 123: -- Iteration 9 --
! 124: int(50)
! 125: array(1) {
! 126: [0]=>
! 127: string(68) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
! 128: }
! 129:
! 130: -- Iteration 10 --
! 131: int(3)
! 132: array(1) {
! 133: [0]=>
! 134: string(4) "44CC"
! 135: }
! 136:
! 137: -- Iteration 11 --
! 138: bool(false)
! 139:
! 140: -- Iteration 12 --
! 141: bool(false)
! 142:
! 143: -- Iteration 13 --
! 144: int(5)
! 145: array(1) {
! 146: [0]=>
! 147: string(8) "MDEyMzQ="
! 148: }
! 149: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>