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 
13 class 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 ?>
static shortenText($a_string, $a_start_pos, $a_num_bytes, $a_encoding='UTF-8')
Shorten text to the given number of bytes.
static strrPos($a_haystack, $a_needle, $a_offset=NULL)
Definition: class.ilStr.php:46
static strLen($a_string)
Definition: class.ilStr.php:91
static convertUpperCamelCaseToUnderscoreCase($value)
Convert a value given in camel case conversion to underscore case conversion (e.g.
static normalizeUtf8String($a_str)
Normalize UTF8 string.
static strPos($a_haystack, $a_needle, $a_offset=NULL)
Definition: class.ilStr.php:34
Add rich text string
The name of the decorator.
static strToLower($a_string)
Multi byte sensitive string functions.
Definition: class.ilStr.php:13
static toNFC( $string)
Convert a UTF-8 string to normal form C, canonical composition.
Definition: UtfNormal.php:154
static getBytesForString($a_str)
Return string as byte array Note: Use this for debugging purposes only.
Create styles array
The data for the language used.
static strToUpper($a_string)
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
static strCmp($a, $b)
Compare two strings.
static strPosAll($a_haystack, $a_needle)
Get all positions of a string.
static replaceFirsOccurence($a_old, $a_new, $a_str)
Replaces the first occurence of $a_old in $a_str with $a_new.
static isUtf8($a_str)
Check whether string is utf-8.