ILIAS  release_5-2 Revision v5.2.25-18-g3f80b828510
class.ilStr.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5
13class ilStr
14{
15 static public function subStr($a_str, $a_start, $a_length = NULL)
16 {
17 if (function_exists("mb_substr"))
18 {
19 // bug in PHP < 5.4.12: null is not supported as length (if encoding given)
20 // https://github.com/php/php-src/pull/133
21 if ($a_length === null)
22 {
23 $a_length = mb_strlen($a_str, "UTF-8");
24 }
25
26 return mb_substr($a_str, $a_start, $a_length, "UTF-8");
27 }
28 else
29 {
30 return substr($a_str, $a_start, $a_length);
31 }
32 }
33
34 static function strPos($a_haystack, $a_needle, $a_offset = NULL)
35 {
36 if (function_exists("mb_strpos"))
37 {
38 return mb_strpos($a_haystack, $a_needle, $a_offset, "UTF-8");
39 }
40 else
41 {
42 return strpos($a_haystack, $a_needle, $a_offset);
43 }
44 }
45
46 static function strrPos($a_haystack, $a_needle, $a_offset = NULL)
47 {
48 if (function_exists("mb_strpos"))
49 {
50 return mb_strrpos($a_haystack, $a_needle, $a_offset, "UTF-8");
51 }
52 else
53 {
54 return strrpos($a_haystack, $a_needle, $a_offset);
55 }
56 }
57
58 static function strIPos($a_haystack, $a_needle, $a_offset = NULL)
59 {
60 if (function_exists("mb_stripos"))
61 {
62 return mb_stripos($a_haystack, $a_needle, $a_offset, "UTF-8");
63 }
64 else
65 {
66 return stripos($a_haystack, $a_needle, $a_offset);
67 }
68 }
69
70 /*function strrPos($a_haystack, $a_needle, $a_offset = NULL)
71 {
72 if (function_exists("mb_strrpos"))
73 {
74 // only for php version 5.2.0 and above
75 if( version_compare(PHP_VERSION, '5.2.0', '>=') )
76 {
77 return mb_strrpos($a_haystack, $a_needle, $a_offset, "UTF-8");
78 }
79 else
80 {
81 @todo: We need an implementation for php versions < 5.2.0
82 return mb_strrpos($a_haystack, $a_needle, "UTF-8");
83 }
84 }
85 else
86 {
87 return strrpos($a_haystack, $a_needle, $a_offset);
88 }
89 }*/
90
91 static public function strLen($a_string)
92 {
93 if (function_exists("mb_strlen"))
94 {
95 return mb_strlen($a_string, "UTF-8");
96 }
97 else
98 {
99 return strlen($a_string);
100 }
101 }
102
103 static public function strToLower($a_string)
104 {
105 if (function_exists("mb_strtolower"))
106 {
107 return mb_strtolower($a_string, "UTF-8");
108 }
109 else
110 {
111 return strtolower($a_string);
112 }
113 }
114
115 static function strToUpper($a_string)
116 {
117 $a_string = (string) $a_string;
118 if (function_exists("mb_strtoupper"))
119 {
120 return mb_strtoupper($a_string, "UTF-8");
121 }
122 else
123 {
124 return strtoupper($a_string);
125 }
126 }
127
131 static function strCmp($a, $b)
132 {
133 global $ilCollator;
134
135 if (is_object($ilCollator))
136 {
137 return ($ilCollator->compare(ilStr::strToUpper($a), ilStr::strToUpper($b)) > 0);
138 }
139 else
140 {
141 return (strcoll(ilStr::strToUpper($a), ilStr::strToUpper($b)) > 0);
142 }
143 }
144
158 static public function shortenText($a_string,$a_start_pos,$a_num_bytes,$a_encoding = 'UTF-8')
159 {
160 if (function_exists("mb_strcut"))
161 {
162 return mb_strcut($a_string, $a_start_pos, $a_num_bytes, $a_encoding);
163 }
164 return substr($a_string, $a_start_pos, $a_num_bytes);
165 }
166
170 static function isUtf8($a_str)
171 {
172 if (function_exists("mb_detect_encoding"))
173 {
174 if (mb_detect_encoding($a_str, "UTF-8", true) == "UTF-8")
175 {
176 return true;
177 }
178 }
179 else
180 {
181 // copied from http://www.php.net/manual/en/function.mb-detect-encoding.php
182 $c=0; $b=0;
183 $bits=0;
184 $len=strlen($a_str);
185 for($i=0; $i<$len; $i++){
186 $c=ord($a_str[$i]);
187 if($c > 128){
188 if(($c >= 254)) return false;
189 elseif($c >= 252) $bits=6;
190 elseif($c >= 248) $bits=5;
191 elseif($c >= 240) $bits=4;
192 elseif($c >= 224) $bits=3;
193 elseif($c >= 192) $bits=2;
194 else return false;
195 if(($i+$bits) > $len) return false;
196 while($bits > 1){
197 $i++;
198 $b=ord($a_str[$i]);
199 if($b < 128 || $b > 191) return false;
200 $bits--;
201 }
202 }
203 }
204 return true;
205 }
206 return false;
207 }
208
209
217 static public function strPosAll($a_haystack, $a_needle)
218 {
219 $positions = array();
220 $cpos = 0;
221 while(is_int($pos = strpos($a_haystack, $a_needle, $cpos)))
222 {
223 $positions[] = $pos;
224 $cpos = $pos+1;
225 }
226 return $positions;
227 }
228
232 static function replaceFirsOccurence($a_old, $a_new, $a_str)
233 {
234 if (is_int(strpos($a_str, $a_old)))
235 {
236 $a_str = substr_replace ($a_str, $a_new, strpos($a_str, $a_old), strlen($a_old));
237 }
238 return $a_str;
239 }
240
246 public static function convertUpperCamelCaseToUnderscoreCase($value)
247 {
248 return strtolower(preg_replace(
249 array('#(?<=(?:[A-Z]))([A-Z]+)([A-Z][A-z])#', '#(?<=(?:[a-z0-9]))([A-Z])#'),
250 array('\1_\2', '_\1'),
251 $value
252 ));
253 }
254
263 static function getBytesForString($a_str)
264 {
265 $bytes = array();
266 for($i = 0; $i < strlen($a_str); $i++)
267 {
268 $bytes[] = ord($a_str[$i]);
269 }
270 return $bytes;
271 }
272
279 static function normalizeUtf8String($a_str)
280 {
281 include_once("./include/Unicode/UtfNormal.php");
282 return UtfNormal::toNFC($a_str);
283 }
284
285
286}
287?>
An exception for terminatinating execution or to throw for unit testing.
static toNFC( $string)
Convert a UTF-8 string to normal form C, canonical composition.
Definition: UtfNormal.php:154
Multi byte sensitive string functions.
Definition: class.ilStr.php:14
static convertUpperCamelCaseToUnderscoreCase($value)
Convert a value given in camel case conversion to underscore case conversion (e.g.
static strPosAll($a_haystack, $a_needle)
Get all positions of a string.
static normalizeUtf8String($a_str)
Normalize UTF8 string.
static getBytesForString($a_str)
Return string as byte array Note: Use this for debugging purposes only.
static shortenText($a_string, $a_start_pos, $a_num_bytes, $a_encoding='UTF-8')
Shorten text to the given number of bytes.
static strPos($a_haystack, $a_needle, $a_offset=NULL)
Definition: class.ilStr.php:34
static strToLower($a_string)
static isUtf8($a_str)
Check whether string is utf-8.
static replaceFirsOccurence($a_old, $a_new, $a_str)
Replaces the first occurence of $a_old in $a_str with $a_new.
static strCmp($a, $b)
Compare two strings.
static strrPos($a_haystack, $a_needle, $a_offset=NULL)
Definition: class.ilStr.php:46
static strToUpper($a_string)
static strLen($a_string)
Definition: class.ilStr.php:91
static strIPos($a_haystack, $a_needle, $a_offset=NULL)
Definition: class.ilStr.php:58
static subStr($a_str, $a_start, $a_length=NULL)
Definition: class.ilStr.php:15