OVH Cloud OVH Cloud

expression reguliere

3 réponses
Avatar
Alain R.
Comment remplacer les caracteres accentues dans une chaine de caracteres
par leur equivalence en minuscule avec une expression regul.

élève --> eleve

Merci

3 réponses

Avatar
Antoun
élève --> eleve


pas besoin de regex pour ça ! exemple tiré de la doc avec strtr :

$addr = strtr($addr, "äâö", "aao");

Avatar
Daedalus
Première idée d'expression régulière qui me vient à l'esprit est d'utiliser
un tableau de "regexp" et un tableau de remplacement :

<?
/* Créer une fonction "replace_accent" qu'il sera plus simple d'utiliser par
la suite */

function replace_accent($string){
$pattern[0] = "/[âàä]/";
$pattern[1] = "/[êèéë]/";
$pattern[2] = "/[îìï]/";
$pattern[3] = "/[ôòö]/";
$pattern[4] = "/[ûùü]/";
$pattern[5] = "/[ÂÀÄ]/";
$pattern[6] = "/[ÊÈÉË]/";
$pattern[7] = "/[ÎÌÏ]/";
$pattern[8] = "/[ÔÒÖ]/";
$pattern[9] = "/[ÛÙÜ]/";

$replace[0] = "a";
$replace[1] = "e";
$replace[2] = "i";
$replace[3] = "o";
$replace[4] = "u";
$replace[5] = "A";
$replace[6] = "E";
$replace[7] = "I";
$replace[8] = "O";
$replace[9] = "U";

return preg_replace($pattern, $replace, $string);
}

/* Utilisation */
$cl_string = replace_accent("Élève");
echo $cl_string;
?>

Enfin c'est une idée, il existe peut-être quelque chose de mieux adapté et
de plus performant.

Dae


"Alain R." wrote in message
news:
Comment remplacer les caracteres accentues dans une chaine de caracteres
par leur equivalence en minuscule avec une expression regul.

élève --> eleve

Merci


Avatar
Guillaume Bouchard
Daedalus wrote:
Enfin c'est une idée, il existe peut-être quelque chose de mieux adapté et
de plus performant.


Je rajouterais une chose de plus à ton programme. Aprés la supression
des caracteres accentues, il faudrait faire une supression de tous
caracteres qui n'est pas autorisé. Donc une petite regex genre

'`[^a-Z]`' --> ''

Car le problème des systeme de filtre sur ce qui est interdit c'est que
souvent cela laisse passer des trucs bizarre. Il faut filtrer sur ce qui
est autorisé.

--
Guillaume.