blob: 4767f0b5fb31722bbeb1a82526a6d69c3be97efb [file] [log] [blame]
Derek Allard2067d1a2008-11-13 22:59:24 +00001<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
2/**
3 * CodeIgniter
4 *
5 * An open source application development framework for PHP 4.3.2 or newer
6 *
7 * @package CodeIgniter
8 * @author ExpressionEngine Dev Team
Derek Jones7f3719f2010-01-05 13:35:37 +00009 * @copyright Copyright (c) 2008 - 2010, EllisLab, Inc.
Derek Allard2067d1a2008-11-13 22:59:24 +000010 * @license http://codeigniter.com/user_guide/license.html
11 * @link http://codeigniter.com
12 * @since Version 1.0
13 * @filesource
14 */
15
16// ------------------------------------------------------------------------
17
18/**
19 * CodeIgniter String Helpers
20 *
21 * @package CodeIgniter
22 * @subpackage Helpers
23 * @category Helpers
24 * @author ExpressionEngine Dev Team
25 * @link http://codeigniter.com/user_guide/helpers/string_helper.html
26 */
27
28// ------------------------------------------------------------------------
29
30/**
31 * Trim Slashes
32 *
33 * Removes any leading/traling slashes from a string:
34 *
35 * /this/that/theother/
36 *
37 * becomes:
38 *
39 * this/that/theother
40 *
41 * @access public
42 * @param string
43 * @return string
44 */
45if ( ! function_exists('trim_slashes'))
46{
47 function trim_slashes($str)
48 {
49 return trim($str, '/');
50 }
51}
52
53// ------------------------------------------------------------------------
54
55/**
56 * Strip Slashes
57 *
58 * Removes slashes contained in a string or in an array
59 *
60 * @access public
61 * @param mixed string or array
62 * @return mixed string or array
63 */
64if ( ! function_exists('strip_slashes'))
65{
66 function strip_slashes($str)
67 {
68 if (is_array($str))
69 {
70 foreach ($str as $key => $val)
71 {
72 $str[$key] = strip_slashes($val);
73 }
74 }
75 else
76 {
77 $str = stripslashes($str);
78 }
79
80 return $str;
81 }
82}
83
84// ------------------------------------------------------------------------
85
86/**
87 * Strip Quotes
88 *
89 * Removes single and double quotes from a string
90 *
91 * @access public
92 * @param string
93 * @return string
94 */
95if ( ! function_exists('strip_quotes'))
96{
97 function strip_quotes($str)
98 {
99 return str_replace(array('"', "'"), '', $str);
100 }
101}
102
103// ------------------------------------------------------------------------
104
105/**
106 * Quotes to Entities
107 *
108 * Converts single and double quotes to entities
109 *
110 * @access public
111 * @param string
112 * @return string
113 */
114if ( ! function_exists('quotes_to_entities'))
115{
116 function quotes_to_entities($str)
117 {
118 return str_replace(array("\'","\"","'",'"'), array("&#39;","&quot;","&#39;","&quot;"), $str);
119 }
120}
121
122// ------------------------------------------------------------------------
123/**
124 * Reduce Double Slashes
125 *
126 * Converts double slashes in a string to a single slash,
127 * except those found in http://
128 *
129 * http://www.some-site.com//index.php
130 *
131 * becomes:
132 *
133 * http://www.some-site.com/index.php
134 *
135 * @access public
136 * @param string
137 * @return string
138 */
139if ( ! function_exists('reduce_double_slashes'))
140{
141 function reduce_double_slashes($str)
142 {
Pascal Kriete42e74bc2009-12-23 16:44:07 +0000143 return preg_replace("#(^|[^:])//+#", "\\1/", $str);
Derek Allard2067d1a2008-11-13 22:59:24 +0000144 }
145}
146
147// ------------------------------------------------------------------------
148
149/**
150 * Reduce Multiples
151 *
152 * Reduces multiple instances of a particular character. Example:
153 *
154 * Fred, Bill,, Joe, Jimmy
155 *
156 * becomes:
157 *
158 * Fred, Bill, Joe, Jimmy
159 *
160 * @access public
161 * @param string
162 * @param string the character you wish to reduce
163 * @param bool TRUE/FALSE - whether to trim the character from the beginning/end
164 * @return string
165 */
166if ( ! function_exists('reduce_multiples'))
167{
168 function reduce_multiples($str, $character = ',', $trim = FALSE)
169 {
170 $str = preg_replace('#'.preg_quote($character, '#').'{2,}#', $character, $str);
171
172 if ($trim === TRUE)
173 {
174 $str = trim($str, $character);
175 }
176
177 return $str;
178 }
179}
180
181// ------------------------------------------------------------------------
182
183/**
184 * Create a Random String
185 *
186 * Useful for generating passwords or hashes.
187 *
188 * @access public
Derek Allard472dd212010-01-23 20:03:27 +0000189 * @param string type of random string. basic, alpha, alunum, numeric, nozero, unique, md5, encrypt and sha1
Derek Allard2067d1a2008-11-13 22:59:24 +0000190 * @param integer number of characters
191 * @return string
Derek Allard472dd212010-01-23 20:03:27 +0000192 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000193if ( ! function_exists('random_string'))
Derek Allard472dd212010-01-23 20:03:27 +0000194{
Derek Allard2067d1a2008-11-13 22:59:24 +0000195 function random_string($type = 'alnum', $len = 8)
196 {
197 switch($type)
198 {
Derek Allard472dd212010-01-23 20:03:27 +0000199 case 'basic' : return mt_rand();
200 break;
Derek Allard2067d1a2008-11-13 22:59:24 +0000201 case 'alnum' :
202 case 'numeric' :
203 case 'nozero' :
Derek Allard472dd212010-01-23 20:03:27 +0000204 case 'alpha' :
Derek Allard2067d1a2008-11-13 22:59:24 +0000205
206 switch ($type)
207 {
Derek Allard472dd212010-01-23 20:03:27 +0000208 case 'alpha' : $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
209 break;
Derek Allard2067d1a2008-11-13 22:59:24 +0000210 case 'alnum' : $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
211 break;
212 case 'numeric' : $pool = '0123456789';
213 break;
214 case 'nozero' : $pool = '123456789';
215 break;
216 }
217
218 $str = '';
219 for ($i=0; $i < $len; $i++)
220 {
221 $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
222 }
223 return $str;
224 break;
Derek Allard472dd212010-01-23 20:03:27 +0000225 case 'unique' :
226 case 'md5' :
227
228 return md5(uniqid(mt_rand()));
229 break;
230 case 'encrypt' :
231 case 'sha1' :
232
233 $CI =& get_instance();
234 $CI->load->helper('security');
235
236 return do_hash(uniqid(mt_rand(), TRUE), 'sha1');
Derek Allard2067d1a2008-11-13 22:59:24 +0000237 break;
238 }
239 }
240}
Derek Allard2067d1a2008-11-13 22:59:24 +0000241// ------------------------------------------------------------------------
242
243/**
244 * Alternator
245 *
246 * Allows strings to be alternated. See docs...
247 *
248 * @access public
249 * @param string (as many parameters as needed)
250 * @return string
251 */
252if ( ! function_exists('alternator'))
253{
254 function alternator()
255 {
256 static $i;
257
258 if (func_num_args() == 0)
259 {
260 $i = 0;
261 return '';
262 }
263 $args = func_get_args();
264 return $args[($i++ % count($args))];
265 }
266}
267
268// ------------------------------------------------------------------------
269
270/**
271 * Repeater function
272 *
273 * @access public
274 * @param string
275 * @param integer number of repeats
276 * @return string
277 */
278if ( ! function_exists('repeater'))
279{
280 function repeater($data, $num = 1)
281 {
282 return (($num > 0) ? str_repeat($data, $num) : '');
283 }
284}
285
286
287/* End of file string_helper.php */
Derek Jonesa3ffbbb2008-05-11 18:18:29 +0000288/* Location: ./system/helpers/string_helper.php */