Aide - Recherche - Membres - Calendrier
Version complète : [réglé] Caractères Spéciaux
La Communauté TitaXium > Service Communication > Espace Developpement
Nokilling
Salut tout le monde smile.gif

Voila, il y a pas longtemps je me suis mis à l'url rewriting pour un de mes projets, mais je vient de voire que j'avais un problème avec les caractères spéciaux :pinch:

Donc pour le moment, j'utilise cette fonction pour filtrer les URL :
Code
function filter($string){
     $spe = 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛܯàâãäåçèéêëìíîï©£òóôõöùúûü~ÿ';
      $normal = 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaceeeeiiiioooooouuuuyyy';
    $msg = strtr($string,$spe,$normal);
    $msg = ereg_replace(' ','-',$string);
    return $msg;
}


Sauf que le problème, sa ne marche pas :s

Par exemple, pour Comédie qui est enregistrer dans ma base de donnée, lorsque je le récupère et que je lui assigne ma fonction filter, il m'affiche Comédie et non pas Comedie.

Et donc voila, je ne sais pas comment faire pour qu'il me fasse automatiquement ça, car je ne connais pas tout les codes html pour les caractères spéciaux.

De plus, j'ai essayé en faisant un htmlentites sur ma chaine de caractères spéciaux, mais le problème, c'est qu'en UTF-8 un é est directement affiché, alors que dans ma base de données qui est en UTF-8 ( en utf8_unicode_ci ) , elle l'enregistre sous la forme : é

Merci d'avance smile.gif
ED
url_encode & url_decode non ?
Nokilling
Là je comprend pas trop, car en utilisant ça, sa me fait exactement ce que j'ai dans l'url, c'est à dire des % et plein de caractères qui n'envoie pas vers la bonne page.

Car là par exemple sa donne des liens du genre : /cat/M%C3%A9cha-c17.html alors que moi je voudrais que sa donne un truc du genre : /cat/Mecha-c17.html

Et si je fait directement un urldecode de mon enregistrement, il laisse les accents, et tout le reste :s

merci d'avance smile.gif
Méthylbro
printf et spnintf non?
Nokilling
Citation (méthylbro @ lundi 01 octobre 2007 à 02h06) *
printf et spnintf non?



Ba ça ne change rien, car lorsqu'il m'affiche toujours le même résultat, car soit il m'affiche avec un accent, soit il m'affiche le texte avec un accent plus un chiffre, et au finale je me retrouve toujours avec mon accent problématique crying.gif
Méthylbro
un str_replace() alors :
Code
$result = str_replace("%C3%A9","e", "/cat/M%C3%A9cha-c17.html");
echo $result;
Nokilling
Citation (méthylbro @ mardi 02 octobre 2007 à 02h25) *
un str_replace() alors :
Code
$result = str_replace("%C3%A9","e", "/cat/M%C3%A9cha-c17.html");
echo $result;



Sa ne marchera pas avec mon problème, car lorsque le php affiche le lien, il le met avec un accent, et c'est le navigateur qui lui le transforme en %C3%A9 smile.gif
Méthylbro
et bien enlève l'accent pour un e normal avec str_replace
Nokilling
Oui mais le problème c'est que je ne connais pas tous les caractères spéciaux, genre le ê, ï, è, ...

Et ce que je ne comprend pas, c'est que je n'arrive jamais à retrouver le résultat insérer dans ma base de données, même si je fais un html_entities, en disant que je veux en utf8, sa ne me donne pas é
Xtouch
Salut,

A la sortie de ta base de donnée :
Code
$titre = filter(html_entity_decode($titre));


Ca te permet de retransormer les é en é, et ainsi, que ton filter fonctionne normalement.
Nokilling
Merci beaucoup Xtouch ça marche parfaitement smile.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2010 Invision Power Services, Inc.