Bonjour,
Je souhaite convertir une chaine pour l'optimiser pour la réécriture d'url
j'ai donc cette fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
function convert_for_url($chaine) {	
	$remplace = array('à'=>'a',
				'á'=>'a',
				'â'=>'a',
				'ã'=>'a',
				'ä'=>'a',
				'å'=>'a',
				'ò'=>'o',
				'ó'=>'o',
				'ô'=>'o',
				'õ'=>'o',
				'ö'=>'o',
				'è'=>'e',
				'é'=>'e',
				'ê'=>'e',
				'ë'=>'e',
				'ì'=>'i',
				'í'=>'i',
				'î'=>'i',
				'ï'=>'i',
				'ù'=>'u',
				'ú'=>'u',
				'û'=>'u',
				'ü'=>'u',
				'ÿ'=>'y',
				'ñ'=>'n',
				'ç'=>'c',
				'ø'=>'0'
				);
	$chaine = strtr($chaine,$remplace); 
        //$chaine = strtolower(strtr($chaine,"àâäåãáçéèêëïîìíñöôóòõùûüúÿ", "aaaaaaceeeeiiiinooooouuuuy")); //Remplacement des caractères accentués par leurs équivariants non accentués
        $chaine = preg_replace('#[^a-z0-9_-]#','-',$chaine); //Remplace tous les caractères non alphanumérique par un tiret
        while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine); //Suppression des tiret en trop
        return $chaine;
 
}
Mais les caracteres accentuer ne sont pas remplacer par leur equivalent sans accents et se retrouve supprimmé.

Petite précision, sur un page de test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$chaine2 = strtr($chaine, 'àáâãäåòóôõöøèéêëçìíîïùúûüÿñ', 'aaaaaaooooooeeeeciiiiuuuuyn');
ne fonctionne pas

mais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
$remplace = array('à'=>'a',
				'á'=>'a',
				'â'=>'a',
				'ã'=>'a',
				'ä'=>'a',
				'å'=>'a',
				'ò'=>'o',
				'ó'=>'o',
				'ô'=>'o',
				'õ'=>'o',
				'ö'=>'o',
				'è'=>'e',
				'é'=>'e',
				'ê'=>'e',
				'ë'=>'e',
				'ì'=>'i',
				'í'=>'i',
				'î'=>'i',
				'ï'=>'i',
				'ù'=>'u',
				'ú'=>'u',
				'û'=>'u',
				'ü'=>'u',
				'ÿ'=>'y',
				'ñ'=>'n',
				'ç'=>'c',
				'ø'=>'0'
				);
$chaine2 = strtr($chaine,$remplace);
fonctionne très bien

Si quelqu'un pouvait m'aider.
Cordialement,
Tentsuken