Petite classe PHP évolutive pour remplacer les caractères accentués par leurs équivalents non accentués.
Permet également le remplacement d’autres caractères au besoin.
La classe est complète, avec des rajouts comme tout en minuscule ou le remplacement des espaces ou autre par un tiret afin de pouvoir la faire évoluer suivant les besoins.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
<?php class Sanitize { private static $_instance = null; private function __construct() { } public static function getInstance() { if (is_null(self::$_instance)) { self::$_instance = new Sanitize(); } return self::$_instance; } public function SanitizeText($sanitizeText) { // Appel fonction principale de remplacement $sanitizeText = $this->_removeNonAscii($sanitizeText); // Remplace les caractères non ascii qui suivent les mots entiers par un tiret // espaces, points, slash, etc. $sanitizeText = preg_replace('/\W+/', '-', $sanitizeText); // Tout en minuscule $sanitizeText = strtolower($sanitizeText); // Supprime les tirets en début de mot $sanitizeText = ltrim($sanitizeText, '-'); // Supprime les tirets en fin de mot $sanitizeText = rtrim($sanitizeText, '-'); return $sanitizeText; } private function _removeNonAscii($text) { $utf8 = array( '/[áàâãªäåæ]/u' => 'a', '/[ÁÀÂÃÄÅÆ]/u' => 'A', '/[éèêë]/u' => 'e', '/[ÉÈÊË]/u' => 'E', '/[ÍÌÎÏÍ]/u' => 'I', '/[íìîï]/u' => 'i', '/[óòôõºöðø]/u' => 'o', '/[ÓÒÔÕÖØ]/u' => 'O', '/[úùûü]/u' => 'u', '/[ÚÙÛÜ]/u' => 'U', '/[ýýÿ]/u' => 'y', '/Š/u' => 'S', '/š/u' => 's', '/ç/' => 'c', '/Ç/' => 'C', '/Ð/' => 'Dj', '/ñ/' => 'n', '/Ñ/' => 'N', '/Ý/' => 'Y', '/Ž/' => 'Z', '/ž/' => 'z', '/þ/' => 'b', '/Þ/' => 'B', '/ƒ/' => 'f', '/ß/' => 'ss', '/Œ/' => 'Oe', '/œ/' => 'oe', '/–/' => '-', // conversion d'un tiret UTF-8 en un tiret simple '/[‘’‚‹›]/u' => ' ', // guillemet simple '/[“”«»„]/u' => ' ', // guillemet double '/ /' => ' ', // espace insécable (équiv. à 0x160) ); $text = preg_replace(array_keys($utf8), array_values($utf8), $text); return $text; } } |
Utilisation :
1 2 3 |
$objsanitize = Sanitize::getInstance(); $sanitizeText = $objsanitize ->SanitizeText($text); |