<?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) : ''; 
    } 
} 
 
 |