Joomla Platform  13.1
Documentation des API du framework Joomla Platform
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
core.php
Aller à la documentation de ce fichier.
1 <?php
2 /**
3 * @version $Id$
4 * @package utf8
5 * @subpackage strings
6 */
7 
8 /**
9 * Define UTF8_CORE as required
10 */
11 if ( !defined('UTF8_CORE') ) {
12  define('UTF8_CORE',TRUE);
13 }
14 
15 //--------------------------------------------------------------------
16 /**
17 * Wrapper round mb_strlen
18 * Assumes you have mb_internal_encoding to UTF-8 already
19 * Note: this function does not count bad bytes in the string - these
20 * are simply ignored
21 * @param string UTF-8 string
22 * @return int number of UTF-8 characters in string
23 * @package utf8
24 * @subpackage strings
25 */
26 function utf8_strlen($str){
27  return mb_strlen($str);
28 }
29 
30 
31 //--------------------------------------------------------------------
32 /**
33 * Assumes mbstring internal encoding is set to UTF-8
34 * Wrapper around mb_strpos
35 * Find position of first occurrence of a string
36 * @param string haystack
37 * @param string needle (you should validate this with utf8_is_valid)
38 * @param integer offset in characters (from left)
39 * @return mixed integer position or FALSE on failure
40 * @package utf8
41 * @subpackage strings
42 */
43 function utf8_strpos($str, $search, $offset = FALSE){
44  if ( $offset === FALSE ) {
45  return mb_strpos($str, $search);
46  } else {
47  return mb_strpos($str, $search, $offset);
48  }
49 }
50 
51 //--------------------------------------------------------------------
52 /**
53 * Assumes mbstring internal encoding is set to UTF-8
54 * Wrapper around mb_strrpos
55 * Find position of last occurrence of a char in a string
56 * @param string haystack
57 * @param string needle (you should validate this with utf8_is_valid)
58 * @param integer (optional) offset (from left)
59 * @return mixed integer position or FALSE on failure
60 * @package utf8
61 * @subpackage strings
62 */
63 function utf8_strrpos($str, $search, $offset = FALSE){
64  if ( $offset === FALSE ) {
65  # Emulate behaviour of strrpos rather than raising warning
66  if ( empty($str) ) {
67  return FALSE;
68  }
69  return mb_strrpos($str, $search);
70  } else {
71  if ( !is_int($offset) ) {
72  trigger_error('utf8_strrpos expects parameter 3 to be long',E_USER_WARNING);
73  return FALSE;
74  }
75 
76  $str = mb_substr($str, $offset);
77 
78  if ( FALSE !== ( $pos = mb_strrpos($str, $search) ) ) {
79  return $pos + $offset;
80  }
81 
82  return FALSE;
83  }
84 }
85 
86 //--------------------------------------------------------------------
87 /**
88 * Assumes mbstring internal encoding is set to UTF-8
89 * Wrapper around mb_substr
90 * Return part of a string given character offset (and optionally length)
91 * @param string
92 * @param integer number of UTF-8 characters offset (from left)
93 * @param integer (optional) length in UTF-8 characters from offset
94 * @return mixed string or FALSE if failure
95 * @package utf8
96 * @subpackage strings
97 */
98 function utf8_substr($str, $offset, $length = FALSE){
99  if ( $length === FALSE ) {
100  return mb_substr($str, $offset);
101  } else {
102  return mb_substr($str, $offset, $length);
103  }
104 }
105 
106 //--------------------------------------------------------------------
107 /**
108 * Assumes mbstring internal encoding is set to UTF-8
109 * Wrapper around mb_strtolower
110 * Make a string lowercase
111 * Note: The concept of a characters "case" only exists is some alphabets
112 * such as Latin, Greek, Cyrillic, Armenian and archaic Georgian - it does
113 * not exist in the Chinese alphabet, for example. See Unicode Standard
114 * Annex #21: Case Mappings
115 * @param string
116 * @return mixed either string in lowercase or FALSE is UTF-8 invalid
117 * @package utf8
118 * @subpackage strings
119 */
120 function utf8_strtolower($str){
121  return mb_strtolower($str);
122 }
123 
124 //--------------------------------------------------------------------
125 /**
126 * Assumes mbstring internal encoding is set to UTF-8
127 * Wrapper around mb_strtoupper
128 * Make a string uppercase
129 * Note: The concept of a characters "case" only exists is some alphabets
130 * such as Latin, Greek, Cyrillic, Armenian and archaic Georgian - it does
131 * not exist in the Chinese alphabet, for example. See Unicode Standard
132 * Annex #21: Case Mappings
133 * @param string
134 * @return mixed either string in lowercase or FALSE is UTF-8 invalid
135 * @package utf8
136 * @subpackage strings
137 */
138 function utf8_strtoupper($str){
139  return mb_strtoupper($str);
140 }