Remplacer les caractères accentués PHP

Fermé
loic_farge Messages postés 6 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 28 janvier 2011 - Modifié par loic_farge le 27/01/2011 à 11:16
Akronos Messages postés 140 Date d'inscription jeudi 6 janvier 2011 Statut Membre Dernière intervention 31 janvier 2011 - 28 janv. 2011 à 09:55
Bonjour,

Je suis sur un projet sous le Zend Framework et je n'arrive pas à remplacer les caractères accentués par des caractères non-accentués malgré toutes les sources trouvées sur le net.

Voici mon code:
$firstname = utf8_decode($user->getFirstName());

$accents = array('À','Á','','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ');

$sans = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O', 'U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y');

$firstname = str_replace($accents, $sans, $firstname);

echo $firstname;

Merci d'avance pour votre aide.
A voir également:

1 réponse

loic_farge Messages postés 6 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 28 janvier 2011
28 janv. 2011 à 03:14
Bravo !

Bon allez je me désinscris de ce site. Et ça se dit développeur.

Personnellement, je suis manager dans le développement d'applications PHP et je suis en train de bosser sur le Framework Zend avec ma team.

Il faut que jeunesse se fasse.

Quand on pose une question, c'est qu'on a déjà fait des recherches avant ne crois-tu pas.

Dans mon cas, c'est pour un souci avec Zend_Search_Lucene et crois bien que les fonctions strtr, str_replace, preg_replace sont déjà passées à l'action ...

Allez!

On va allez s'inscrire sur un site anglophone où on a des gens compétents.

A+ et félicitation pour ta vitesse de recherche sur Google.

Tu bosse pour quelle entreprise ?
-1
Akronos Messages postés 140 Date d'inscription jeudi 6 janvier 2011 Statut Membre Dernière intervention 31 janvier 2011 32
28 janv. 2011 à 09:03
Au lieu de te plaindre, pose ton problème en entier et peut-être que t'auras une réponse valable.
Excuse moi de pas deviner ton si haut savoir en lisant:
$firstname = utf8_decode($user->getFirstName()); 
$accents = array('À','Á','','Ã','Ä','Å','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü','Ý','à','á','â','ã','ä','å','ç','è','é','ê','ë','ì','í','î','ï','ð','ò','ó','ô','õ','ö','ù','ú','û','ü','ý','ÿ');

$sans = array('A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','O','O','O','O','O', 'U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','o','o','o','o','o','o','u','u','u','u','y','y');

$firstname = str_replace($accents, $sans, $firstname); 


Le fait que tu sois sous Zend Framework n'insinue pas que le problème viens de Zend_Search_Lucene, donc précise le et ça t'éviteras de voir des trucs du genre: strtr.

Et pour répondre à ta question, l'entreprise ne fait pas le développeur, c'est le développeur qui fait l'entreprise. Bonne chance pour ton problème et bonne chance avec les anglophones.
0
Akronos Messages postés 140 Date d'inscription jeudi 6 janvier 2011 Statut Membre Dernière intervention 31 janvier 2011 32
Modifié par Akronos le 28/01/2011 à 09:09
Et j'ajoute ceci:

Remplacer les accents par leur équivalent ASCII: FOPNCTIONNE AVEC ZEND FRAMEWORK
ici ils ont même mis le logo de Zend

Et à priori, on t'a pas appris à faire une recherche monsieur parfait programmeur...
0
loic_farge Messages postés 6 Date d'inscription jeudi 27 janvier 2011 Statut Membre Dernière intervention 28 janvier 2011
28 janv. 2011 à 09:35
public static function encodeUrlParam ( $string ) {
$string = trim($string);

if ( ctype_digit($string) ) {
return $string;
}
else {
// replace accented chars
$accents = '/&([A-Za-z]{1,2})(grave|acute|circ|cedil|uml|lig);/';
$string_encoded = htmlentities(utf8_decode($string));

$string = preg_replace($accents,'$1',$string_encoded);

// clean out the rest
$replace = array('([\40])','([^a-zA-Z0-9-])','(-{2,})');
$with = array('-','','-');
$string = preg_replace($replace,$with,$string);
}

return strtolower($string);
}

@Akronos : ce n'est pas la réponse à ma question que je critique mais la remarque totalement inutile: 3s de recherche sur Google et on trouve la réponse. Et ben non. Sache que les gens ne sont pas aussi stupides et qu'avant de poser une question, ils font comme tout le monde: GOOGLE.

Allez a+
0
Akronos Messages postés 140 Date d'inscription jeudi 6 janvier 2011 Statut Membre Dernière intervention 31 janvier 2011 32
28 janv. 2011 à 09:55
Désolé de te décevoir mais tu as tord, plus de 50% de ce qui posent leur problème ici n'ont fait aucune recherche Google au préalable.
0