1--TEST-- 2Test mb_ereg() function : basic functionality 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 basic functionality of mb_ereg 17 */ 18 19echo "*** Testing mb_ereg() : basic functionality ***\n"; 20 21if(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_ascii1 = b'(.*is)+.*\.[[:blank:]][0-9]{9}'; 28$regex_ascii2 = b'.*is+'; 29 30$string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII='); 31$regex_mb1 = base64_decode('KOaXpeacrOiqnikuKj8oWzEtOV0rKQ=='); 32$regex_mb2 = base64_decode('5LiW55WM'); 33 34echo "\n**-- ASCII String --**\n"; 35echo "-- Without \$regs argument--\n"; 36var_dump(mb_ereg($regex_ascii1, $string_ascii)); 37var_dump(mb_ereg($regex_ascii2, $string_ascii)); 38echo "--With \$regs argument --\n"; 39var_dump(mb_ereg($regex_ascii1, $string_ascii, $regs_ascii1)); 40base64_encode_var_dump($regs_ascii1); 41var_dump(mb_ereg($regex_ascii2, $string_ascii, $regs_ascii2)); 42base64_encode_var_dump($regs_ascii2); 43 44echo "\n**-- Multibyte String --**\n"; 45echo "-- Without \$regs argument --\n"; 46var_dump(mb_ereg($regex_mb1, $string_mb)); 47var_dump(mb_ereg($regex_mb2, $string_mb)); 48echo "-- With \$regs argument --\n"; 49var_dump(mb_ereg($regex_mb1, $string_mb, $regs_mb1)); 50base64_encode_var_dump($regs_mb1); 51var_dump(mb_ereg($regex_mb2, $string_mb, $regs_mb2)); 52var_dump($regs_mb2); 53 54echo "Done"; 55 56/** 57 * replicate a var dump of an array but outputted string values are base64 encoded 58 * 59 * @param array $regs 60 */ 61function base64_encode_var_dump($regs) { 62 if ($regs) { 63 echo "array(" . count($regs) . ") {\n"; 64 foreach ($regs as $key => $value) { 65 echo " [$key]=>\n "; 66 if (is_string($value)) { 67 var_dump(base64_encode($value)); 68 } else { 69 var_dump($value); 70 } 71 } 72 echo "}\n"; 73 } else { 74 echo "NULL\n"; 75 } 76} 77?> 78--EXPECT-- 79*** Testing mb_ereg() : basic functionality *** 80Regex encoding set to utf-8 81 82**-- ASCII String --** 83-- Without $regs argument-- 84int(1) 85int(1) 86--With $regs argument -- 87int(36) 88array(2) { 89 [0]=> 90 string(48) "VGhpcyBpcyBhbiBFbmdsaXNoIHN0cmluZy4gMDEyMzQ1Njc4" 91 [1]=> 92 string(24) "VGhpcyBpcyBhbiBFbmdsaXM=" 93} 94int(17) 95array(1) { 96 [0]=> 97 string(24) "VGhpcyBpcyBhbiBFbmdsaXM=" 98} 99 100**-- Multibyte String --** 101-- Without $regs argument -- 102int(1) 103bool(false) 104-- With $regs argument -- 105int(35) 106array(3) { 107 [0]=> 108 string(48) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzQ=" 109 [1]=> 110 string(12) "5pel5pys6Kqe" 111 [2]=> 112 string(8) "MTIzNA==" 113} 114bool(false) 115array(0) { 116} 117Done 118