Chris@0: RandomCompat_strlen($binary_string)) { Chris@0: return ''; Chris@0: } Chris@0: Chris@16: return (string) mb_substr( Chris@16: (string) $binary_string, Chris@16: (int) $start, Chris@16: (int) $length, Chris@16: '8bit' Chris@16: ); Chris@0: } Chris@0: Chris@0: } else { Chris@0: Chris@0: /** Chris@0: * substr() implementation that isn't brittle to mbstring.func_overload Chris@0: * Chris@0: * This version just uses the default substr() Chris@0: * Chris@0: * @param string $binary_string Chris@0: * @param int $start Chris@16: * @param int|null $length (optional) Chris@0: * Chris@0: * @throws TypeError Chris@0: * Chris@0: * @return string Chris@0: */ Chris@0: function RandomCompat_substr($binary_string, $start, $length = null) Chris@0: { Chris@0: if (!is_string($binary_string)) { Chris@0: throw new TypeError( Chris@0: 'RandomCompat_substr(): First argument should be a string' Chris@0: ); Chris@0: } Chris@0: Chris@0: if (!is_int($start)) { Chris@0: throw new TypeError( Chris@0: 'RandomCompat_substr(): Second argument should be an integer' Chris@0: ); Chris@0: } Chris@0: Chris@0: if ($length !== null) { Chris@0: if (!is_int($length)) { Chris@0: throw new TypeError( Chris@0: 'RandomCompat_substr(): Third argument should be an integer, or omitted' Chris@0: ); Chris@0: } Chris@0: Chris@16: return (string) substr( Chris@16: (string )$binary_string, Chris@16: (int) $start, Chris@16: (int) $length Chris@16: ); Chris@0: } Chris@0: Chris@16: return (string) substr( Chris@16: (string) $binary_string, Chris@16: (int) $start Chris@16: ); Chris@0: } Chris@0: } Chris@0: }