Annotation of embedaddon/php/ext/mbstring/tests/mb_substr_variation5.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: Test mb_substr() function : usage variations - pass different integers to $length arg
! 3: --SKIPIF--
! 4: <?php
! 5: extension_loaded('mbstring') or die('skip');
! 6: function_exists('mb_substr') or die("skip mb_substr() is not available in this build");
! 7: ?>
! 8: --FILE--
! 9: <?php
! 10: /* Prototype : string mb_substr(string $str, int $start [, int $length [, string $encoding]])
! 11: * Description: Returns part of a string
! 12: * Source code: ext/mbstring/mbstring.c
! 13: */
! 14:
! 15: /*
! 16: * Test how mb_substr() behaves when passed a range of integers as $length argument
! 17: */
! 18:
! 19: echo "*** Testing mb_substr() : usage variations ***\n";
! 20:
! 21: mb_internal_encoding('UTF-8');
! 22:
! 23: $string_ascii = b'+Is an English string'; //21 chars
! 24:
! 25: //Japanese string, 21 characters
! 26: $string_mb = base64_decode('5pel5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII=');
! 27:
! 28: /*
! 29: * Loop through integers as multiples of ten for $offset argument
! 30: * 60 is larger than *BYTE* count for $string_mb
! 31: */
! 32: for ($i = -60; $i <= 60; $i += 10) {
! 33: if (@$a || @$b) {
! 34: $a = null;
! 35: $b = null;
! 36: }
! 37: echo "\n**-- Offset is: $i --**\n";
! 38: echo "-- ASCII String --\n";
! 39: $a = mb_substr($string_ascii, 1, $i);
! 40: var_dump(base64_encode($a));
! 41: echo "--Multibyte String --\n";
! 42: $b = mb_substr($string_mb, 1, $i, 'UTF-8');
! 43: if (strlen($a) == mb_strlen($b, 'UTF-8')) { // should return same length
! 44: var_dump(base64_encode($b));
! 45: } else {
! 46: echo "Difference in length of ASCII string and multibyte string\n";
! 47: }
! 48:
! 49: }
! 50:
! 51: echo "Done";
! 52: ?>
! 53: --EXPECT--
! 54: *** Testing mb_substr() : usage variations ***
! 55:
! 56: **-- Offset is: -60 --**
! 57: -- ASCII String --
! 58: string(0) ""
! 59: --Multibyte String --
! 60: string(0) ""
! 61:
! 62: **-- Offset is: -50 --**
! 63: -- ASCII String --
! 64: string(0) ""
! 65: --Multibyte String --
! 66: string(0) ""
! 67:
! 68: **-- Offset is: -40 --**
! 69: -- ASCII String --
! 70: string(0) ""
! 71: --Multibyte String --
! 72: string(0) ""
! 73:
! 74: **-- Offset is: -30 --**
! 75: -- ASCII String --
! 76: string(0) ""
! 77: --Multibyte String --
! 78: string(0) ""
! 79:
! 80: **-- Offset is: -20 --**
! 81: -- ASCII String --
! 82: string(0) ""
! 83: --Multibyte String --
! 84: string(0) ""
! 85:
! 86: **-- Offset is: -10 --**
! 87: -- ASCII String --
! 88: string(16) "SXMgYW4gRW5nbA=="
! 89: --Multibyte String --
! 90: string(40) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMA=="
! 91:
! 92: **-- Offset is: 0 --**
! 93: -- ASCII String --
! 94: string(0) ""
! 95: --Multibyte String --
! 96: string(0) ""
! 97:
! 98: **-- Offset is: 10 --**
! 99: -- ASCII String --
! 100: string(16) "SXMgYW4gRW5nbA=="
! 101: --Multibyte String --
! 102: string(40) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMA=="
! 103:
! 104: **-- Offset is: 20 --**
! 105: -- ASCII String --
! 106: string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc="
! 107: --Multibyte String --
! 108: string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
! 109:
! 110: **-- Offset is: 30 --**
! 111: -- ASCII String --
! 112: string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc="
! 113: --Multibyte String --
! 114: string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
! 115:
! 116: **-- Offset is: 40 --**
! 117: -- ASCII String --
! 118: string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc="
! 119: --Multibyte String --
! 120: string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
! 121:
! 122: **-- Offset is: 50 --**
! 123: -- ASCII String --
! 124: string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc="
! 125: --Multibyte String --
! 126: string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
! 127:
! 128: **-- Offset is: 60 --**
! 129: -- ASCII String --
! 130: string(28) "SXMgYW4gRW5nbGlzaCBzdHJpbmc="
! 131: --Multibyte String --
! 132: string(68) "5pys6Kqe44OG44Kt44K544OI44Gn44GZ44CCMDEyMzTvvJXvvJbvvJfvvJjvvJnjgII="
! 133: Done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>