nettoyer texte php

Nettoyer une chaine de caractère et supprimer les accents

Une fonction bien pratique pour avoir des chaines de caractères "propres"

accent php, php supprimer accent, supprimer accents php, php replace accents, php chaine de caractere, remplacer les accents php, php enlever les accents, php supprimer les accents d un, php sans accent, nettoyer chaine caractere php, php supprimer les espaces et remplacer, fonction espace chaine de caractere, fonction mysql chaine de caractere, normalisation, normaliser

Date de publication : 2011-07-27 15:23:39

Envie de lustrer vos chaines de caractères ? Voici une fonction php qui permet de supprimer les accents et de normaliser une chaine de caractères utf-8. Je l'utilise pour créer des urls "propres" ou pour comparer des textes.

Nettoyage d'une chaine de caractères

Comme une liste vaut mieux qu'un grand discourt, je vous présente ce que fait réellement cette fonction :

  • Mise en minuscule des caractères
  • Remplacement de tous les caractères autres qu'une lettre ou un chiffre par un espace
  • Remplacement des accents par la lettre correspondante sans accent

Et bien sur le code php :


<?php
function clean ($str)
{
/** Mise en minuscules (chaîne utf-8 !) */
$str = mb_strtolower($str, 'utf-8');
/** Nettoyage des caractères */
mb_regex_encoding('utf-8');
$str = trim(preg_replace('/ +/', ' ', mb_ereg_replace('[^0-9\p{L}]+', ' ', $str)));
/** strtr() sait gérer le multibyte */
$str = strtr($str, array(
'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'a'=>'a', 'a'=>'a', 'a'=>'a', 'ç'=>'c', 'c'=>'c', 'c'=>'c', 'c'=>'c', 'c'=>'c', 'd'=>'d', 'd'=>'d', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'e'=>'e', 'e'=>'e', 'e'=>'e', 'e'=>'e', 'e'=>'e', 'g'=>'g', 'g'=>'g', 'g'=>'g', 'h'=>'h', 'h'=>'h', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'i'=>'i', 'i'=>'i', 'i'=>'i', 'i'=>'i', 'i'=>'i', '?'=>'i', 'j'=>'j', 'k'=>'k', '?'=>'k', 'l'=>'l', 'l'=>'l', 'l'=>'l', '?'=>'l', 'l'=>'l', 'ñ'=>'n', 'n'=>'n', 'n'=>'n', 'n'=>'n', '?'=>'n', '?'=>'n', 'ð'=>'o', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'o'=>'o', 'o'=>'o', 'o'=>'o', 'œ'=>'o', 'ø'=>'o', 'r'=>'r', 'r'=>'r', 's'=>'s', 's'=>'s', 's'=>'s', 'š'=>'s', '?'=>'s', 't'=>'t', 't'=>'t', 't'=>'t', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ü'=>'u', 'u'=>'u', 'u'=>'u', 'u'=>'u', 'u'=>'u', 'u'=>'u', 'u'=>'u', 'w'=>'w', 'ý'=>'y', 'ÿ'=>'y', 'y'=>'y', 'z'=>'z', 'z'=>'z', 'ž'=>'z'
));
return $str;
}
?>

Suppression des accents dans une chaine utf8

Edit du 2013-12-04 : Voici une méthode simple pour supprimer les accents des chaines utf8.


<?php
function removeAccents($string) {
//Normalisation de la chaine utf8 en mode caractère + accents
$string = Normalizer::normalize($string, Normalizer::FORM_D);
//Suppression des accents
return preg_replace('~\p{Mn}~u', '', $string);
}
?>

Image : David Abrams

 
 

b1n@sp1n