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