| <?php |
| /** |
| * CodeIgniter |
| * |
| * An open source application development framework for PHP |
| * |
| * This content is released under the MIT License (MIT) |
| * |
| * Copyright (c) 2014 - 2018, British Columbia Institute of Technology |
| * |
| * 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. |
| * |
| * @package CodeIgniter |
| * @author EllisLab Dev Team |
| * @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/) |
| * @copyright Copyright (c) 2014 - 2018, British Columbia Institute of Technology (http://bcit.ca/) |
| * @license http://opensource.org/licenses/MIT MIT License |
| * @link https://codeigniter.com |
| * @since Version 1.0.0 |
| * @filesource |
| */ |
| defined('BASEPATH') OR exit('No direct script access allowed'); |
| |
| /** |
| * CodeIgniter String Helpers |
| * |
| * @package CodeIgniter |
| * @subpackage Helpers |
| * @category Helpers |
| * @author EllisLab Dev Team |
| * @link https://codeigniter.com/user_guide/helpers/string_helper.html |
| */ |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('trim_slashes')) |
| { |
| /** |
| * Trim Slashes |
| * |
| * Removes any leading/trailing slashes from a string: |
| * |
| * /this/that/theother/ |
| * |
| * becomes: |
| * |
| * this/that/theother |
| * |
| * @todo Remove in version 3.1+. |
| * @deprecated 3.0.0 This is just an alias for PHP's native trim() |
| * |
| * @param string |
| * @return string |
| */ |
| function trim_slashes($str) |
| { |
| return trim($str, '/'); |
| } |
| } |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('strip_slashes')) |
| { |
| /** |
| * Strip Slashes |
| * |
| * Removes slashes contained in a string or in an array |
| * |
| * @param mixed string or array |
| * @return mixed string or array |
| */ |
| function strip_slashes($str) |
| { |
| if ( ! is_array($str)) |
| { |
| return stripslashes($str); |
| } |
| |
| foreach ($str as $key => $val) |
| { |
| $str[$key] = strip_slashes($val); |
| } |
| |
| return $str; |
| } |
| } |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('strip_quotes')) |
| { |
| /** |
| * Strip Quotes |
| * |
| * Removes single and double quotes from a string |
| * |
| * @param string |
| * @return string |
| */ |
| function strip_quotes($str) |
| { |
| return str_replace(array('"', "'"), '', $str); |
| } |
| } |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('quotes_to_entities')) |
| { |
| /** |
| * Quotes to Entities |
| * |
| * Converts single and double quotes to entities |
| * |
| * @param string |
| * @return string |
| */ |
| function quotes_to_entities($str) |
| { |
| return str_replace(array("\'","\"","'",'"'), array("'",""","'","""), $str); |
| } |
| } |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('reduce_double_slashes')) |
| { |
| /** |
| * Reduce Double Slashes |
| * |
| * Converts double slashes in a string to a single slash, |
| * except those found in http:// |
| * |
| * http://www.some-site.com//index.php |
| * |
| * becomes: |
| * |
| * http://www.some-site.com/index.php |
| * |
| * @param string |
| * @return string |
| */ |
| function reduce_double_slashes($str) |
| { |
| return preg_replace('#(^|[^:])//+#', '\\1/', $str); |
| } |
| } |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('reduce_multiples')) |
| { |
| /** |
| * Reduce Multiples |
| * |
| * Reduces multiple instances of a particular character. Example: |
| * |
| * Fred, Bill,, Joe, Jimmy |
| * |
| * becomes: |
| * |
| * Fred, Bill, Joe, Jimmy |
| * |
| * @param string |
| * @param string the character you wish to reduce |
| * @param bool TRUE/FALSE - whether to trim the character from the beginning/end |
| * @return string |
| */ |
| function reduce_multiples($str, $character = ',', $trim = FALSE) |
| { |
| $str = preg_replace('#'.preg_quote($character, '#').'{2,}#', $character, $str); |
| return ($trim === TRUE) ? trim($str, $character) : $str; |
| } |
| } |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('random_string')) |
| { |
| /** |
| * Create a "Random" String |
| * |
| * @param string type of random string. basic, alpha, alnum, numeric, nozero, unique, md5, encrypt and sha1 |
| * @param int number of characters |
| * @return string |
| */ |
| function random_string($type = 'alnum', $len = 8) |
| { |
| switch ($type) |
| { |
| case 'basic': |
| return mt_rand(); |
| case 'alnum': |
| case 'numeric': |
| case 'nozero': |
| case 'alpha': |
| switch ($type) |
| { |
| case 'alpha': |
| $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; |
| break; |
| case 'alnum': |
| $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; |
| break; |
| case 'numeric': |
| $pool = '0123456789'; |
| break; |
| case 'nozero': |
| $pool = '123456789'; |
| break; |
| } |
| return substr(str_shuffle(str_repeat($pool, ceil($len / strlen($pool)))), 0, $len); |
| case 'unique': // todo: remove in 3.1+ |
| case 'md5': |
| return md5(uniqid(mt_rand())); |
| case 'encrypt': // todo: remove in 3.1+ |
| case 'sha1': |
| return sha1(uniqid(mt_rand(), TRUE)); |
| } |
| } |
| } |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('increment_string')) |
| { |
| /** |
| * Add's _1 to a string or increment the ending number to allow _2, _3, etc |
| * |
| * @param string required |
| * @param string What should the duplicate number be appended with |
| * @param string Which number should be used for the first dupe increment |
| * @return string |
| */ |
| function increment_string($str, $separator = '_', $first = 1) |
| { |
| preg_match('/(.+)'.preg_quote($separator, '/').'([0-9]+)$/', $str, $match); |
| return isset($match[2]) ? $match[1].$separator.($match[2] + 1) : $str.$separator.$first; |
| } |
| } |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('alternator')) |
| { |
| /** |
| * Alternator |
| * |
| * Allows strings to be alternated. See docs... |
| * |
| * @param string (as many parameters as needed) |
| * @return string |
| */ |
| function alternator() |
| { |
| static $i; |
| |
| if (func_num_args() === 0) |
| { |
| $i = 0; |
| return ''; |
| } |
| |
| $args = func_get_args(); |
| return $args[($i++ % count($args))]; |
| } |
| } |
| |
| // ------------------------------------------------------------------------ |
| |
| if ( ! function_exists('repeater')) |
| { |
| /** |
| * Repeater function |
| * |
| * @todo Remove in version 3.1+. |
| * @deprecated 3.0.0 This is just an alias for PHP's native str_repeat() |
| * |
| * @param string $data String to repeat |
| * @param int $num Number of repeats |
| * @return string |
| */ |
| function repeater($data, $num = 1) |
| { |
| return ($num > 0) ? str_repeat($data, $num) : ''; |
| } |
| } |