1: | <?php
|
2: | |
3: | |
4: | |
5: | |
6: | |
7: | |
8: | |
9: | |
10: | |
11: | |
12: | |
13: | |
14: | |
15: | |
16: | |
17: | |
18: | |
19: | |
20: | |
21: | |
22: | |
23: | |
24: | |
25: | |
26: | |
27: |
|
28: |
|
29: | if (!is_callable('RandomCompat_strlen')) {
|
30: | if (
|
31: | defined('MB_OVERLOAD_STRING')
|
32: | &&
|
33: | ((int) ini_get('mbstring.func_overload')) & MB_OVERLOAD_STRING
|
34: | ) {
|
35: | |
36: | |
37: | |
38: | |
39: | |
40: | |
41: | |
42: | |
43: | |
44: | |
45: | |
46: |
|
47: | function RandomCompat_strlen($binary_string)
|
48: | {
|
49: | if (!is_string($binary_string)) {
|
50: | throw new TypeError(
|
51: | 'RandomCompat_strlen() expects a string'
|
52: | );
|
53: | }
|
54: |
|
55: | return (int) mb_strlen($binary_string, '8bit');
|
56: | }
|
57: |
|
58: | } else {
|
59: | |
60: | |
61: | |
62: | |
63: | |
64: | |
65: | |
66: | |
67: | |
68: | |
69: |
|
70: | function RandomCompat_strlen($binary_string)
|
71: | {
|
72: | if (!is_string($binary_string)) {
|
73: | throw new TypeError(
|
74: | 'RandomCompat_strlen() expects a string'
|
75: | );
|
76: | }
|
77: | return (int) strlen($binary_string);
|
78: | }
|
79: | }
|
80: | }
|
81: |
|
82: | if (!is_callable('RandomCompat_substr')) {
|
83: |
|
84: | if (
|
85: | defined('MB_OVERLOAD_STRING')
|
86: | &&
|
87: | ((int) ini_get('mbstring.func_overload')) & MB_OVERLOAD_STRING
|
88: | ) {
|
89: | |
90: | |
91: | |
92: | |
93: | |
94: | |
95: | |
96: | |
97: | |
98: | |
99: | |
100: | |
101: | |
102: |
|
103: | function RandomCompat_substr($binary_string, $start, $length = null)
|
104: | {
|
105: | if (!is_string($binary_string)) {
|
106: | throw new TypeError(
|
107: | 'RandomCompat_substr(): First argument should be a string'
|
108: | );
|
109: | }
|
110: |
|
111: | if (!is_int($start)) {
|
112: | throw new TypeError(
|
113: | 'RandomCompat_substr(): Second argument should be an integer'
|
114: | );
|
115: | }
|
116: |
|
117: | if ($length === null) {
|
118: | |
119: | |
120: | |
121: |
|
122: |
|
123: | $length = RandomCompat_strlen($binary_string) - $start;
|
124: | } elseif (!is_int($length)) {
|
125: | throw new TypeError(
|
126: | 'RandomCompat_substr(): Third argument should be an integer, or omitted'
|
127: | );
|
128: | }
|
129: |
|
130: |
|
131: | if ($start === RandomCompat_strlen($binary_string) && $length === 0) {
|
132: | return '';
|
133: | }
|
134: | if ($start > RandomCompat_strlen($binary_string)) {
|
135: | return '';
|
136: | }
|
137: |
|
138: | return (string) mb_substr(
|
139: | (string) $binary_string,
|
140: | (int) $start,
|
141: | (int) $length,
|
142: | '8bit'
|
143: | );
|
144: | }
|
145: |
|
146: | } else {
|
147: |
|
148: | |
149: | |
150: | |
151: | |
152: | |
153: | |
154: | |
155: | |
156: | |
157: | |
158: | |
159: | |
160: |
|
161: | function RandomCompat_substr($binary_string, $start, $length = null)
|
162: | {
|
163: | if (!is_string($binary_string)) {
|
164: | throw new TypeError(
|
165: | 'RandomCompat_substr(): First argument should be a string'
|
166: | );
|
167: | }
|
168: |
|
169: | if (!is_int($start)) {
|
170: | throw new TypeError(
|
171: | 'RandomCompat_substr(): Second argument should be an integer'
|
172: | );
|
173: | }
|
174: |
|
175: | if ($length !== null) {
|
176: | if (!is_int($length)) {
|
177: | throw new TypeError(
|
178: | 'RandomCompat_substr(): Third argument should be an integer, or omitted'
|
179: | );
|
180: | }
|
181: |
|
182: | return (string) substr(
|
183: | (string )$binary_string,
|
184: | (int) $start,
|
185: | (int) $length
|
186: | );
|
187: | }
|
188: |
|
189: | return (string) substr(
|
190: | (string) $binary_string,
|
191: | (int) $start
|
192: | );
|
193: | }
|
194: | }
|
195: | }
|
196: | |