Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpnamespace ParagonIE\ConstantTime;/*** Copyright (c) 2016 - 2017 Paragon Initiative Enterprises.* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated documentation files (the "Software"), to deal* in the Software without restriction, including without limitation the rights* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell* copies of the Software, and to permit persons to whom the Software is* furnished to do so, subject to the following conditions:** The above copyright notice and this permission notice shall be included in all* copies or substantial portions of the Software.** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE* SOFTWARE.*//*** Class Binary** Binary string operators that don't choke on* mbstring.func_overload** @package ParagonIE\ConstantTime*/abstract class Binary{/*** Safe string length** @ref mbstring.func_overload** @param string $str* @return int*/public static function safeStrlen($str){if (\function_exists('mb_strlen')) {return (int) \mb_strlen($str, '8bit');} else {return (int) \strlen($str);}}/*** Safe substring** @ref mbstring.func_overload** @staticvar boolean $exists* @param string $str* @param int $start* @param int $length* @return string* @throws \TypeError*/public static function safeSubstr($str,$start = 0,$length = \null) {if (\function_exists('mb_substr')) {// mb_substr($str, 0, null, '8bit') returns an empty string on PHP// 5.3, so we have to find the length ourselves.if (\is_null($length)) {if ($start >= 0) {$length = self::safeStrlen($str) - $start;} else {$length = -$start;}}// $length calculation above might result in a 0-length stringif ($length === 0) {return '';}return \mb_substr($str, $start, $length, '8bit');}if ($length === 0) {return '';}// Unlike mb_substr(), substr() doesn't accept null for lengthif (!is_null($length)) {return \substr($str, $start, $length);} else {return \substr($str, $start);}}}