ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
StringUtil.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Sabre\DAV;
4 
16 class StringUtil {
17 
27  static function textMatch($haystack, $needle, $collation, $matchType = 'contains') {
28 
29  switch ($collation) {
30 
31  case 'i;ascii-casemap' :
32  // default strtolower takes locale into consideration
33  // we don't want this.
34  $haystack = str_replace(range('a', 'z'), range('A', 'Z'), $haystack);
35  $needle = str_replace(range('a', 'z'), range('A', 'Z'), $needle);
36  break;
37 
38  case 'i;octet' :
39  // Do nothing
40  break;
41 
42  case 'i;unicode-casemap' :
43  $haystack = mb_strtoupper($haystack, 'UTF-8');
44  $needle = mb_strtoupper($needle, 'UTF-8');
45  break;
46 
47  default :
48  throw new Exception\BadRequest('Collation type: ' . $collation . ' is not supported');
49 
50  }
51 
52  switch ($matchType) {
53 
54  case 'contains' :
55  return strpos($haystack, $needle) !== false;
56  case 'equals' :
57  return $haystack === $needle;
58  case 'starts-with' :
59  return strpos($haystack, $needle) === 0;
60  case 'ends-with' :
61  return strrpos($haystack, $needle) === strlen($haystack) - strlen($needle);
62  default :
63  throw new Exception\BadRequest('Match-type: ' . $matchType . ' is not supported');
64 
65  }
66 
67  }
68 
79  static function ensureUTF8($input) {
80 
81  $encoding = mb_detect_encoding($input, ['UTF-8', 'ISO-8859-1'], true);
82 
83  if ($encoding === 'ISO-8859-1') {
84  return utf8_encode($input);
85  } else {
86  return $input;
87  }
88 
89  }
90 
91 }
String utility.
Definition: StringUtil.php:16
static ensureUTF8($input)
This method takes an input string, checks if it&#39;s not valid UTF-8 and attempts to convert it to UTF-8...
Definition: StringUtil.php:79
static textMatch($haystack, $needle, $collation, $matchType='contains')
Checks if a needle occurs in a haystack ;)
Definition: StringUtil.php:27