From 0b221e8945ae785dc706d8ea9a9e8e25532c0096 Mon Sep 17 00:00:00 2001 From: Friendika Date: Tue, 28 Jun 2011 21:11:52 -0700 Subject: bug #96 move libraries to library - better alignment of like rotator --- library/phpsec/PHP/Compat/Function/str_split.php | 59 ++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 library/phpsec/PHP/Compat/Function/str_split.php (limited to 'library/phpsec/PHP/Compat/Function/str_split.php') diff --git a/library/phpsec/PHP/Compat/Function/str_split.php b/library/phpsec/PHP/Compat/Function/str_split.php new file mode 100644 index 000000000..8e38bdb89 --- /dev/null +++ b/library/phpsec/PHP/Compat/Function/str_split.php @@ -0,0 +1,59 @@ +, Arpad Ray + * @link http://php.net/function.str_split + * @author Aidan Lister + * @version $Revision: 1.1 $ + * @since PHP 5 + * @require PHP 4.0.0 (user_error) + */ +function php_compat_str_split($string, $split_length = 1) +{ + if (!is_scalar($split_length)) { + user_error('str_split() expects parameter 2 to be long, ' . + gettype($split_length) . ' given', E_USER_WARNING); + return false; + } + + $split_length = (int) $split_length; + if ($split_length < 1) { + user_error('str_split() The length of each segment must be greater than zero', E_USER_WARNING); + return false; + } + + // Select split method + if ($split_length < 65536) { + // Faster, but only works for less than 2^16 + preg_match_all('/.{1,' . $split_length . '}/s', $string, $matches); + return $matches[0]; + } else { + // Required due to preg limitations + $arr = array(); + $idx = 0; + $pos = 0; + $len = strlen($string); + + while ($len > 0) { + $blk = ($len < $split_length) ? $len : $split_length; + $arr[$idx++] = substr($string, $pos, $blk); + $pos += $blk; + $len -= $blk; + } + + return $arr; + } +} + + +// Define +if (!function_exists('str_split')) { + function str_split($string, $split_length = 1) + { + return php_compat_str_split($string, $split_length); + } +} -- cgit v1.2.3