Problème suppression des accents !

Fermé
Cassie691 Messages postés 35 Date d'inscription mardi 15 septembre 2015 Statut Membre Dernière intervention 6 juillet 2020 - 12 févr. 2016 à 18:25
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 12 févr. 2016 à 19:21
Bonjour,
j'ai un soucis au niveau de mon script, il fonctionne bien mise à part pour les accents, au lieu de m'afficher le texte sans accent, il supprime le caractère !

Voici:
	<?php
	function format_url($chaine) { 
	// en minuscule
    $chaine=strtolower($chaine);
	
	// supprime les caracteres speciaux
    $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/", "/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
    $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
    $chaine = preg_replace($accents, $sans, $chaine);  
    $chaine = preg_replace('#[^A-Za-z0-9]#', '-', $chaine);
 
   // Remplace les tirets multiples par un tiret unique
   $chaine = ereg_replace( "\-+", '-', $chaine );
   
   // Supprime le dernier caractère si c'est un tiret
   $chaine = rtrim( $chaine, '-' );
 
    while (strpos($chaine,'--') !== false) 
		$chaine = str_replace('--', '-', $chaine);
 
    return $chaine; 
	
}
?>


Je vous remercie d'avance pour votre aide !
A voir également:

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
12 févr. 2016 à 18:30
Au vu de ton besoin, un str_replace est largement suffisant.
0
Cassie691 Messages postés 35 Date d'inscription mardi 15 septembre 2015 Statut Membre Dernière intervention 6 juillet 2020 5
12 févr. 2016 à 18:40
Merci de ta réponse, mais je sais pas si tu as jeté un oeil sur le script il y'a:
   $accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/", "/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
    $sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
12 févr. 2016 à 18:47
Pour remplacer les caractères accentués, un simple str_replace sera plus adapté que preg_replace tout en étant plus facile à comprendre.
0
Cassie691 Messages postés 35 Date d'inscription mardi 15 septembre 2015 Statut Membre Dernière intervention 6 juillet 2020 5
Modifié par Cassie691 le 12/02/2016 à 18:55
Merci, j'ai testé et au lieu de m'afficher 'hé oui', il m'affiche:
h%E3%A9%20oui ( en remplaçant tout les preg_replace par str_replace ).

Mais si je remplace seulement le preg_replace pour les caractères accentué il m'affiche:
h-oui donc idem il me supprime les caractères avec accents au lieu de remplacer le é par un e .. :(
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
12 févr. 2016 à 19:21
D'où l'utilité de donner un max d'informations.
"%E3%A9" indique que ta chaine est en UTF8, donc ta liste des caractères accentués doit aussi être en URF8, vérifies l'encodage utilisé par ton éditeur de code.
0