blob: 60f6ed17115d1d9d5800129a764f9d630d1a2a02 [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 *
Derek Jones1e141922010-03-05 10:24:50 -060033 * Removes any leading/trailing slashes from a string:
Derek Allard2067d1a2008-11-13 22:59:24 +000034 *
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 {
Derek Jones1e141922010-03-05 10:24:50 -060049 return trim($str, '/');
50 }
Derek Allard2067d1a2008-11-13 22:59:24 +000051}
Derek Jones1e141922010-03-05 10:24:50 -060052
Derek Allard2067d1a2008-11-13 22:59:24 +000053// ------------------------------------------------------------------------
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// ------------------------------------------------------------------------
Derek Jones1e141922010-03-05 10:24:50 -0600123
Derek Allard2067d1a2008-11-13 22:59:24 +0000124/**
125 * Reduce Double Slashes
126 *
127 * Converts double slashes in a string to a single slash,
128 * except those found in http://
129 *
130 * http://www.some-site.com//index.php
131 *
132 * becomes:
133 *
134 * http://www.some-site.com/index.php
135 *
136 * @access public
137 * @param string
138 * @return string
139 */
140if ( ! function_exists('reduce_double_slashes'))
141{
142 function reduce_double_slashes($str)
143 {
Pascal Kriete42e74bc2009-12-23 16:44:07 +0000144 return preg_replace("#(^|[^:])//+#", "\\1/", $str);
Derek Allard2067d1a2008-11-13 22:59:24 +0000145 }
146}
Derek Jones1e141922010-03-05 10:24:50 -0600147
Derek Allard2067d1a2008-11-13 22:59:24 +0000148// ------------------------------------------------------------------------
149
150/**
151 * Reduce Multiples
152 *
153 * Reduces multiple instances of a particular character. Example:
154 *
155 * Fred, Bill,, Joe, Jimmy
156 *
157 * becomes:
158 *
159 * Fred, Bill, Joe, Jimmy
160 *
161 * @access public
162 * @param string
163 * @param string the character you wish to reduce
164 * @param bool TRUE/FALSE - whether to trim the character from the beginning/end
165 * @return string
166 */
167if ( ! function_exists('reduce_multiples'))
168{
169 function reduce_multiples($str, $character = ',', $trim = FALSE)
170 {
171 $str = preg_replace('#'.preg_quote($character, '#').'{2,}#', $character, $str);
172
173 if ($trim === TRUE)
174 {
175 $str = trim($str, $character);
176 }
Derek Jones1e141922010-03-05 10:24:50 -0600177
Derek Allard2067d1a2008-11-13 22:59:24 +0000178 return $str;
179 }
180}
181
182// ------------------------------------------------------------------------
183
184/**
185 * Create a Random String
186 *
187 * Useful for generating passwords or hashes.
188 *
189 * @access public
Derek Allard472dd212010-01-23 20:03:27 +0000190 * @param string type of random string. basic, alpha, alunum, numeric, nozero, unique, md5, encrypt and sha1
Derek Allard2067d1a2008-11-13 22:59:24 +0000191 * @param integer number of characters
192 * @return string
Derek Allard472dd212010-01-23 20:03:27 +0000193 */
Derek Allard2067d1a2008-11-13 22:59:24 +0000194if ( ! function_exists('random_string'))
Derek Allard472dd212010-01-23 20:03:27 +0000195{
Derek Allard2067d1a2008-11-13 22:59:24 +0000196 function random_string($type = 'alnum', $len = 8)
197 {
198 switch($type)
199 {
Derek Allard472dd212010-01-23 20:03:27 +0000200 case 'basic' : return mt_rand();
201 break;
Derek Allard2067d1a2008-11-13 22:59:24 +0000202 case 'alnum' :
203 case 'numeric' :
204 case 'nozero' :
Derek Allard472dd212010-01-23 20:03:27 +0000205 case 'alpha' :
Derek Allard2067d1a2008-11-13 22:59:24 +0000206
207 switch ($type)
208 {
Derek Allard472dd212010-01-23 20:03:27 +0000209 case 'alpha' : $pool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
210 break;
Derek Allard2067d1a2008-11-13 22:59:24 +0000211 case 'alnum' : $pool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
212 break;
213 case 'numeric' : $pool = '0123456789';
214 break;
215 case 'nozero' : $pool = '123456789';
216 break;
217 }
218
219 $str = '';
220 for ($i=0; $i < $len; $i++)
221 {
222 $str .= substr($pool, mt_rand(0, strlen($pool) -1), 1);
223 }
224 return $str;
225 break;
Derek Allard472dd212010-01-23 20:03:27 +0000226 case 'unique' :
227 case 'md5' :
228
229 return md5(uniqid(mt_rand()));
230 break;
231 case 'encrypt' :
232 case 'sha1' :
233
234 $CI =& get_instance();
235 $CI->load->helper('security');
236
237 return do_hash(uniqid(mt_rand(), TRUE), 'sha1');
Derek Allard2067d1a2008-11-13 22:59:24 +0000238 break;
239 }
240 }
241}
Derek Jones1e141922010-03-05 10:24:50 -0600242
Derek Allard2067d1a2008-11-13 22:59:24 +0000243// ------------------------------------------------------------------------
244
245/**
246 * Alternator
247 *
248 * Allows strings to be alternated. See docs...
249 *
250 * @access public
251 * @param string (as many parameters as needed)
252 * @return string
253 */
254if ( ! function_exists('alternator'))
255{
256 function alternator()
257 {
258 static $i;
259
260 if (func_num_args() == 0)
261 {
262 $i = 0;
263 return '';
264 }
265 $args = func_get_args();
266 return $args[($i++ % count($args))];
267 }
268}
269
270// ------------------------------------------------------------------------
271
272/**
273 * Repeater function
274 *
275 * @access public
276 * @param string
277 * @param integer number of repeats
278 * @return string
279 */
280if ( ! function_exists('repeater'))
281{
282 function repeater($data, $num = 1)
283 {
284 return (($num > 0) ? str_repeat($data, $num) : '');
285 }
286}
287
288
289/* End of file string_helper.php */
Derek Jonesa3ffbbb2008-05-11 18:18:29 +0000290/* Location: ./system/helpers/string_helper.php */