Annotation of embedaddon/php/ext/mbstring/tests/mb_ereg_variation6.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Test mb_ereg() function : usage variations - match special characters
                      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 mb_ereg() matches special characters for $pattern
                     17:  */
                     18: 
                     19: echo "*** Testing mb_ereg() : usage variations ***\n";
                     20: 
                     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: 
                     27: $regex_char = array ('\w+' => b'\w+', 
                     28:                      '\W+' => b'\W+', 
                     29:                      '\s+' => b'\s+', 
                     30:                      '\S+' => b'\S+', 
                     31:                      '\d+' => b'\d+', 
                     32:                      '\D+' => b'\D+', 
                     33:                      '\b' =>  b'\b', 
                     34:                      '\B' =>  b'\B');
                     35: 
                     36: $string_ascii = b'This is an English string. 0123456789.';
                     37: $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=');
                     38: 
                     39: foreach ($regex_char as $displayChar => $char) {
                     40:        echo "\n--** Pattern is: $displayChar **--\n";
                     41:        if (@$regs_ascii || @$regs_mb) {
                     42:                $regs_ascii = null;
                     43:                $regs_mb = null;
                     44:        }
                     45:        echo "-- ASCII String: --\n";
                     46:        var_dump(mb_ereg($char, $string_ascii, $regs_ascii));
                     47:        base64_encode_var_dump($regs_ascii);
                     48: 
                     49:        echo "-- Multibyte String: --\n";
                     50:        var_dump(mb_ereg($char, $string_mb, $regs_mb));
                     51:        base64_encode_var_dump($regs_mb);
                     52: 
                     53: }
                     54: 
                     55: /**
                     56:  * replicate a var dump of an array but outputted string values are base64 encoded
                     57:  *
                     58:  * @param array $regs
                     59:  */
                     60: function base64_encode_var_dump($regs) {
                     61:        if ($regs) {
                     62:                echo "array(" . count($regs) . ") {\n";
                     63:                foreach ($regs as $key => $value) {
                     64:                        echo "  [$key]=>\n  ";
                     65:                        if (is_string($value)) {
                     66:                                var_dump(base64_encode($value));
                     67:                        } else {
                     68:                                var_dump($value);
                     69:                        }
                     70:                }
                     71:                echo "}\n";
                     72:        } else {
                     73:                echo "NULL\n";
                     74:        }
                     75: }
                     76: 
                     77: echo "Done";
                     78: 
                     79: ?>
                     80: --EXPECT--
                     81: *** Testing mb_ereg() : usage variations ***
                     82: Regex encoding set to utf-8
                     83: 
                     84: --** Pattern is: \w+ **--
                     85: -- ASCII String: --
                     86: int(4)
                     87: array(1) {
                     88:   [0]=>
                     89:   string(8) "VGhpcw=="
                     90: }
                     91: -- Multibyte String: --
                     92: int(27)
                     93: array(1) {
                     94:   [0]=>
                     95:   string(36) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ"
                     96: }
                     97: 
                     98: --** Pattern is: \W+ **--
                     99: -- ASCII String: --
                    100: int(1)
                    101: array(1) {
                    102:   [0]=>
                    103:   string(4) "IA=="
                    104: }
                    105: -- Multibyte String: --
                    106: int(3)
                    107: array(1) {
                    108:   [0]=>
                    109:   string(4) "44CC"
                    110: }
                    111: 
                    112: --** Pattern is: \s+ **--
                    113: -- ASCII String: --
                    114: int(1)
                    115: array(1) {
                    116:   [0]=>
                    117:   string(4) "IA=="
                    118: }
                    119: -- Multibyte String: --
                    120: bool(false)
                    121: NULL
                    122: 
                    123: --** Pattern is: \S+ **--
                    124: -- ASCII String: --
                    125: int(4)
                    126: array(1) {
                    127:   [0]=>
                    128:   string(8) "VGhpcw=="
                    129: }
                    130: -- Multibyte String: --
                    131: int(53)
                    132: array(1) {
                    133:   [0]=>
                    134:   string(72) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
                    135: }
                    136: 
                    137: --** Pattern is: \d+ **--
                    138: -- ASCII String: --
                    139: int(10)
                    140: array(1) {
                    141:   [0]=>
                    142:   string(16) "MDEyMzQ1Njc4OQ=="
                    143: }
                    144: -- Multibyte String: --
                    145: int(20)
                    146: array(1) {
                    147:   [0]=>
                    148:   string(28) "MDEyMzTvvJXvvJbvvJfvvJjvvJk="
                    149: }
                    150: 
                    151: --** Pattern is: \D+ **--
                    152: -- ASCII String: --
                    153: int(27)
                    154: array(1) {
                    155:   [0]=>
                    156:   string(36) "VGhpcyBpcyBhbiBFbmdsaXNoIHN0cmluZy4g"
                    157: }
                    158: -- Multibyte String: --
                    159: int(30)
                    160: array(1) {
                    161:   [0]=>
                    162:   string(40) "5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CC"
                    163: }
                    164: 
                    165: --** Pattern is: \b **--
                    166: -- ASCII String: --
                    167: int(1)
                    168: array(1) {
                    169:   [0]=>
                    170:   bool(false)
                    171: }
                    172: -- Multibyte String: --
                    173: int(1)
                    174: array(1) {
                    175:   [0]=>
                    176:   bool(false)
                    177: }
                    178: 
                    179: --** Pattern is: \B **--
                    180: -- ASCII String: --
                    181: int(1)
                    182: array(1) {
                    183:   [0]=>
                    184:   bool(false)
                    185: }
                    186: -- Multibyte String: --
                    187: int(1)
                    188: array(1) {
                    189:   [0]=>
                    190:   bool(false)
                    191: }
                    192: Done

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>