Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
RemoveAccents.php
Go to the documentation of this file.
1 <?php
7 
12 {
16  protected $german;
17 
21  public function __construct($german = false)
22  {
23  $this->german = $german;
24  }
25 
31  public function filter($string)
32  {
33  static $replacements;
34 
35  if (empty($replacements[$this->german])) {
36  $substitutions = [
37  // single ISO-8859-1 letters
38  192 => 'A',
39  193 => 'A',
40  194 => 'A',
41  195 => 'A',
42  196 => 'A',
43  197 => 'A',
44  199 => 'C',
45  208 => 'D',
46  200 => 'E',
47  201 => 'E',
48  202 => 'E',
49  203 => 'E',
50  204 => 'I',
51  205 => 'I',
52  206 => 'I',
53  207 => 'I',
54  209 => 'N',
55  210 => 'O',
56  211 => 'O',
57  212 => 'O',
58  213 => 'O',
59  214 => 'O',
60  216 => 'O',
61  138 => 'S',
62  217 => 'U',
63  218 => 'U',
64  219 => 'U',
65  220 => 'U',
66  221 => 'Y',
67  142 => 'Z',
68  224 => 'a',
69  225 => 'a',
70  226 => 'a',
71  227 => 'a',
72  228 => 'a',
73  229 => 'a',
74  231 => 'c',
75  232 => 'e',
76  233 => 'e',
77  234 => 'e',
78  235 => 'e',
79  236 => 'i',
80  237 => 'i',
81  238 => 'i',
82  239 => 'i',
83  241 => 'n',
84  240 => 'o',
85  242 => 'o',
86  243 => 'o',
87  244 => 'o',
88  245 => 'o',
89  246 => 'o',
90  248 => 'o',
91  154 => 's',
92  249 => 'u',
93  250 => 'u',
94  251 => 'u',
95  252 => 'u',
96  253 => 'y',
97  255 => 'y',
98  158 => 'z',
99  // HTML entities
100  258 => 'A',
101  260 => 'A',
102  262 => 'C',
103  268 => 'C',
104  270 => 'D',
105  272 => 'D',
106  280 => 'E',
107  282 => 'E',
108  286 => 'G',
109  304 => 'I',
110  313 => 'L',
111  317 => 'L',
112  321 => 'L',
113  323 => 'N',
114  327 => 'N',
115  336 => 'O',
116  340 => 'R',
117  344 => 'R',
118  346 => 'S',
119  350 => 'S',
120  354 => 'T',
121  356 => 'T',
122  366 => 'U',
123  368 => 'U',
124  377 => 'Z',
125  379 => 'Z',
126  259 => 'a',
127  261 => 'a',
128  263 => 'c',
129  269 => 'c',
130  271 => 'd',
131  273 => 'd',
132  281 => 'e',
133  283 => 'e',
134  287 => 'g',
135  305 => 'i',
136  322 => 'l',
137  314 => 'l',
138  318 => 'l',
139  324 => 'n',
140  328 => 'n',
141  337 => 'o',
142  341 => 'r',
143  345 => 'r',
144  347 => 's',
145  351 => 's',
146  357 => 't',
147  355 => 't',
148  367 => 'u',
149  369 => 'u',
150  378 => 'z',
151  380 => 'z',
152  // ligatures
153  198 => 'Ae',
154  230 => 'ae',
155  140 => 'Oe',
156  156 => 'oe',
157  223 => 'ss',
158  ];
159 
160  if ($this->german) {
161  // umlauts
162  $germanReplacements = [
163  196 => 'Ae',
164  228 => 'ae',
165  214 => 'Oe',
166  246 => 'oe',
167  220 => 'Ue',
168  252 => 'ue',
169  ];
170  $substitutions = $germanReplacements + $substitutions;
171  }
172 
173  $replacements[$this->german] = [];
174  foreach ($substitutions as $code => $value) {
175  $replacements[$this->german][$code < 256 ? chr($code) : '&#' . $code . ';'] = $value;
176  }
177  }
178 
179  // convert string from default database format (UTF-8)
180  // to encoding which replacement arrays made with (ISO-8859-1)
181  $convertedString = @iconv('UTF-8', 'ISO-8859-1//IGNORE', $string);
182  if ($convertedString) {
183  $string = $convertedString;
184  }
185  // Replace
186  $string = strtr($string, $replacements[$this->german]);
187  return $string;
188  }
189 }
$value
Definition: gender.phtml:16
$code
Definition: info.phtml:12