Joomla Platform  13.1
Documentation des API du framework Joomla Platform
 Tout Classes Espaces de nommage Fichiers Fonctions Variables Pages
transliterate.php
Aller à la documentation de ce fichier.
1 <?php
2 /**
3  * @package Joomla.Platform
4  * @subpackage Language
5  *
6  * @copyright Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
7  * @license GNU General Public License version 2 or later; see LICENSE
8  */
9 
10 defined('JPATH_PLATFORM') or die;
11 
12 /**
13  * Class to transliterate strings
14  *
15  * @package Joomla.Platform
16  * @subpackage Language
17  * @since 11.1
18  * @note Port of phputf8's utf8_accents_to_ascii()
19  */
21 {
22  /**
23  * Returns strings transliterated from UTF-8 to Latin
24  *
25  * @param string $string String to transliterate
26  * @param boolean $case Optionally specify upper or lower case. Default to null.
27  *
28  * @return string Transliterated string
29  *
30  * @since 11.1
31  */
32  public static function utf8_latin_to_ascii($string, $case = 0)
33  {
34  static $UTF8_LOWER_ACCENTS = null;
35  static $UTF8_UPPER_ACCENTS = null;
36 
37  if ($case <= 0)
38  {
39  if (is_null($UTF8_LOWER_ACCENTS))
40  {
41  $UTF8_LOWER_ACCENTS = array(
42  'à' => 'a',
43  'ô' => 'o',
44  'ď' => 'd',
45  'ḟ' => 'f',
46  'ë' => 'e',
47  'š' => 's',
48  'ơ' => 'o',
49  'ß' => 'ss',
50  'ă' => 'a',
51  'ř' => 'r',
52  'ț' => 't',
53  'ň' => 'n',
54  'ā' => 'a',
55  'ķ' => 'k',
56  'ŝ' => 's',
57  'ỳ' => 'y',
58  'ņ' => 'n',
59  'ĺ' => 'l',
60  'ħ' => 'h',
61  'ṗ' => 'p',
62  'ó' => 'o',
63  'ú' => 'u',
64  'ě' => 'e',
65  'é' => 'e',
66  'ç' => 'c',
67  'ẁ' => 'w',
68  'ċ' => 'c',
69  'õ' => 'o',
70  'ṡ' => 's',
71  'ø' => 'o',
72  'ģ' => 'g',
73  'ŧ' => 't',
74  'ș' => 's',
75  'ė' => 'e',
76  'ĉ' => 'c',
77  'ś' => 's',
78  'î' => 'i',
79  'ű' => 'u',
80  'ć' => 'c',
81  'ę' => 'e',
82  'ŵ' => 'w',
83  'ṫ' => 't',
84  'ū' => 'u',
85  'č' => 'c',
86  'ö' => 'oe',
87  'è' => 'e',
88  'ŷ' => 'y',
89  'ą' => 'a',
90  'ł' => 'l',
91  'ų' => 'u',
92  'ů' => 'u',
93  'ş' => 's',
94  'ğ' => 'g',
95  'ļ' => 'l',
96  'ƒ' => 'f',
97  'ž' => 'z',
98  'ẃ' => 'w',
99  'ḃ' => 'b',
100  'å' => 'a',
101  'ì' => 'i',
102  'ï' => 'i',
103  'ḋ' => 'd',
104  'ť' => 't',
105  'ŗ' => 'r',
106  'ä' => 'ae',
107  'í' => 'i',
108  'ŕ' => 'r',
109  'ê' => 'e',
110  'ü' => 'ue',
111  'ò' => 'o',
112  'ē' => 'e',
113  'ñ' => 'n',
114  'ń' => 'n',
115  'ĥ' => 'h',
116  'ĝ' => 'g',
117  'đ' => 'd',
118  'ĵ' => 'j',
119  'ÿ' => 'y',
120  'ũ' => 'u',
121  'ŭ' => 'u',
122  'ư' => 'u',
123  'ţ' => 't',
124  'ý' => 'y',
125  'ő' => 'o',
126  'â' => 'a',
127  'ľ' => 'l',
128  'ẅ' => 'w',
129  'ż' => 'z',
130  'ī' => 'i',
131  'ã' => 'a',
132  'ġ' => 'g',
133  'ṁ' => 'm',
134  'ō' => 'o',
135  'ĩ' => 'i',
136  'ù' => 'u',
137  'į' => 'i',
138  'ź' => 'z',
139  'á' => 'a',
140  'û' => 'u',
141  'þ' => 'th',
142  'ð' => 'dh',
143  'æ' => 'ae',
144  'µ' => 'u',
145  'ĕ' => 'e',
146  'œ' => 'oe');
147  }
148 
149  $string = str_replace(array_keys($UTF8_LOWER_ACCENTS), array_values($UTF8_LOWER_ACCENTS), $string);
150  }
151 
152  if ($case >= 0)
153  {
154  if (is_null($UTF8_UPPER_ACCENTS))
155  {
156  $UTF8_UPPER_ACCENTS = array(
157  'À' => 'A',
158  'Ô' => 'O',
159  'Ď' => 'D',
160  'Ḟ' => 'F',
161  'Ë' => 'E',
162  'Š' => 'S',
163  'Ơ' => 'O',
164  'Ă' => 'A',
165  'Ř' => 'R',
166  'Ț' => 'T',
167  'Ň' => 'N',
168  'Ā' => 'A',
169  'Ķ' => 'K',
170  'Ŝ' => 'S',
171  'Ỳ' => 'Y',
172  'Ņ' => 'N',
173  'Ĺ' => 'L',
174  'Ħ' => 'H',
175  'Ṗ' => 'P',
176  'Ó' => 'O',
177  'Ú' => 'U',
178  'Ě' => 'E',
179  'É' => 'E',
180  'Ç' => 'C',
181  'Ẁ' => 'W',
182  'Ċ' => 'C',
183  'Õ' => 'O',
184  'Ṡ' => 'S',
185  'Ø' => 'O',
186  'Ģ' => 'G',
187  'Ŧ' => 'T',
188  'Ș' => 'S',
189  'Ė' => 'E',
190  'Ĉ' => 'C',
191  'Ś' => 'S',
192  'Î' => 'I',
193  'Ű' => 'U',
194  'Ć' => 'C',
195  'Ę' => 'E',
196  'Ŵ' => 'W',
197  'Ṫ' => 'T',
198  'Ū' => 'U',
199  'Č' => 'C',
200  'Ö' => 'Oe',
201  'È' => 'E',
202  'Ŷ' => 'Y',
203  'Ą' => 'A',
204  'Ł' => 'L',
205  'Ų' => 'U',
206  'Ů' => 'U',
207  'Ş' => 'S',
208  'Ğ' => 'G',
209  'Ļ' => 'L',
210  'Ƒ' => 'F',
211  'Ž' => 'Z',
212  'Ẃ' => 'W',
213  'Ḃ' => 'B',
214  'Å' => 'A',
215  'Ì' => 'I',
216  'Ï' => 'I',
217  'Ḋ' => 'D',
218  'Ť' => 'T',
219  'Ŗ' => 'R',
220  'Ä' => 'Ae',
221  'Í' => 'I',
222  'Ŕ' => 'R',
223  'Ê' => 'E',
224  'Ü' => 'Ue',
225  'Ò' => 'O',
226  'Ē' => 'E',
227  'Ñ' => 'N',
228  'Ń' => 'N',
229  'Ĥ' => 'H',
230  'Ĝ' => 'G',
231  'Đ' => 'D',
232  'Ĵ' => 'J',
233  'Ÿ' => 'Y',
234  'Ũ' => 'U',
235  'Ŭ' => 'U',
236  'Ư' => 'U',
237  'Ţ' => 'T',
238  'Ý' => 'Y',
239  'Ő' => 'O',
240  'Â' => 'A',
241  'Ľ' => 'L',
242  'Ẅ' => 'W',
243  'Ż' => 'Z',
244  'Ī' => 'I',
245  'Ã' => 'A',
246  'Ġ' => 'G',
247  'Ṁ' => 'M',
248  'Ō' => 'O',
249  'Ĩ' => 'I',
250  'Ù' => 'U',
251  'Į' => 'I',
252  'Ź' => 'Z',
253  'Á' => 'A',
254  'Û' => 'U',
255  'Þ' => 'Th',
256  'Ð' => 'Dh',
257  'Æ' => 'Ae',
258  'Ĕ' => 'E',
259  'Œ' => 'Oe');
260  }
261  $string = str_replace(array_keys($UTF8_UPPER_ACCENTS), array_values($UTF8_UPPER_ACCENTS), $string);
262  }
263 
264  return $string;
265  }
266 }