1--TEST-- 2Test mb_ereg() function : usage variations - pass different character classes to see they match correctly 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/* 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 that mb_ereg can match correctly when passed different character classes. 17 */ 18 19echo "*** Testing mb_ereg() : variation ***\n"; 20 21 22mb_regex_encoding('utf-8'); // have to set otherwise won't match $mb properly 23$mb = base64_decode('5pel5pys6Kqe'); 24$character_classes = array (b'aB1' => b'[[:alnum:]]+', /*1*/ 25 b'aBcD' => b'[[:alpha:]]+', 26 b'ab/=' => b'[[:ascii:]]+', 27 b" \t" => b'[[:blank:]]+', 28 b'234' => b'[[:digit:]]+', /*5*/ 29 "$mb" => b'[[:graph:]]+', 30 b'fjds' => b'[[:lower:]]+', 31 b"$mb\t" => b'[[:print:]]+', 32 b'.!"*@' => b'[[:punct:]]+', 33 b"\t" => b'[[:space:]]+', /*10*/ 34 b'IDSJV' => b'[[:upper:]]+', 35 b'3b5D' => b'[[:xdigit:]]+'); /*12*/ 36 37$iterator = 1; 38foreach($character_classes as $string => $pattern) { 39 if (is_array(@$regs)) { 40 $regs = null; 41 } 42 // make sure any multibyte output is in base 64 43 echo "\n-- Iteration $iterator --\n"; 44 var_dump(mb_ereg($pattern, $string, $regs)); 45 base64_encode_var_dump($regs); 46 $iterator++; 47} 48/** 49 * replicate a var dump of an array but outputted string values are base64 encoded 50 * 51 * @param array $regs 52 */ 53function base64_encode_var_dump($regs) { 54 if ($regs) { 55 echo "array(" . count($regs) . ") {\n"; 56 foreach ($regs as $key => $value) { 57 echo " [$key]=>\n "; 58 if (is_string($value)) { 59 var_dump(base64_encode($value)); 60 } else { 61 var_dump($value); 62 } 63 } 64 echo "}\n"; 65 } else { 66 echo "NULL\n"; 67 } 68} 69 70echo "Done"; 71?> 72 73--EXPECT-- 74*** Testing mb_ereg() : variation *** 75 76-- Iteration 1 -- 77int(3) 78array(1) { 79 [0]=> 80 string(4) "YUIx" 81} 82 83-- Iteration 2 -- 84int(4) 85array(1) { 86 [0]=> 87 string(8) "YUJjRA==" 88} 89 90-- Iteration 3 -- 91int(4) 92array(1) { 93 [0]=> 94 string(8) "YWIvPQ==" 95} 96 97-- Iteration 4 -- 98int(2) 99array(1) { 100 [0]=> 101 string(4) "IAk=" 102} 103 104-- Iteration 5 -- 105int(3) 106array(1) { 107 [0]=> 108 string(4) "MjM0" 109} 110 111-- Iteration 6 -- 112int(9) 113array(1) { 114 [0]=> 115 string(12) "5pel5pys6Kqe" 116} 117 118-- Iteration 7 -- 119int(4) 120array(1) { 121 [0]=> 122 string(8) "Zmpkcw==" 123} 124 125-- Iteration 8 -- 126int(10) 127array(1) { 128 [0]=> 129 string(16) "5pel5pys6KqeCQ==" 130} 131 132-- Iteration 9 -- 133int(5) 134array(1) { 135 [0]=> 136 string(8) "LiEiKkA=" 137} 138 139-- Iteration 10 -- 140int(1) 141array(1) { 142 [0]=> 143 string(4) "CQ==" 144} 145 146-- Iteration 11 -- 147int(5) 148array(1) { 149 [0]=> 150 string(8) "SURTSlY=" 151} 152 153-- Iteration 12 -- 154int(4) 155array(1) { 156 [0]=> 157 string(8) "M2I1RA==" 158} 159Done