Ce mémo a été publié le 18 février 2016 et peut contenir des informations qui peuvent être incomplètes, non mises à jour voir erronées du fait de son ancienneté.
N'hésitez pas à compléter votre recherche sur des articles plus récents.
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); |