Sparrow Posted November 25, 2010 Share Posted November 25, 2010 Bonjour,En cherchant à personnaliser un module, j'ai besoin de récupérer une chaine de caractères.Le problème est que je n'arrive pas à la traiter pour ce qui est de la suppression des caractères spéciaux s 'é è'.J'ai fait différents tests avec preg_replace ou encore strtr Dans ces cas, ma chaine n'est plus affichée du tout.La seule chose qui fonctionne est la suppression des espaces $chaine = preg_replace('/\s/', '', $chaine); Auriez-vous une exemple concret pour m'aider ?Merci d'avance. Link to comment Share on other sites More sharing options...
Vincent Decaux Posted November 25, 2010 Share Posted November 25, 2010 Tu auras plus de chance de trouver ton bonheur sur Php.net, vu que ta demande concerne uniquement du Php.Tes accents sont affichés comment dans ta chaîne ? Un simple str_replace('é', 'e', 'remplacé'); ne fonctionne pas ? Link to comment Share on other sites More sharing options...
Sparrow Posted November 25, 2010 Author Share Posted November 25, 2010 Merci,En fait, j'ai fait pas mal de recherche sur php.net et autres mais quand je teste str_replaceavec les caractères spéciaux 'é' à remplacer par 'e', il ne se passe rien.Ou ma chaine apparaît vide, par contre, pour les espaces j'ai utilisé '/\s/' et '' la aucun problème.Ou est ce qu'il serait possible d'appeler la même fonction que celle qui est utilisée automatiquement pour les champs 'url-simplifié'de l'ajout de catégories, produits etc... ? et obtenir ainsi "ma-chaine" plutôt que "ma chaîne"Encore merci. Link to comment Share on other sites More sharing options...
Vincent Decaux Posted November 25, 2010 Share Posted November 25, 2010 function wd_remove_accents($str, $charset='utf-8') { $str = htmlentities($str, ENT_NOQUOTES, $charset); $str = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml)\;#', '\1', $str); $str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str); // pour les ligatures e.g. 'œ' $str = preg_replace('#\&[^;]+\;#', '', $str); // supprime les autres caractères return $str; } Mais bon, ça me parait lourd pour ça ! Cela doit être des soucis d'encodage, les accents ne doivent pas sortir en " é " mais en "@Ae" ou caractères bizarres. Link to comment Share on other sites More sharing options...
Yann - Prestaplugins Posted November 25, 2010 Share Posted November 25, 2010 ta chaine étant en utf8 il te faut préciser un paramètre "u" à la fin de ta regexp.$chaine = preg_replace('/éè\s/u', '', $chaine);Ou alors regarder du coté des fonctions de manipulation de string special unicode => http://php.net/manual/fr/ref.mbstring.php Link to comment Share on other sites More sharing options...
Sparrow Posted November 25, 2010 Author Share Posted November 25, 2010 Bonsoir,Je vous remercie pour vos réponses.En essayant la fonction de vincent, dés que je l'utilise, il me renvoi une page blanche.Juste au cas ou, pour l'appel j'utilise $machaine2 = wd_remove_accents($machaine);j'ai aussi essayé $chaine = preg_replace(’/éè\s/u’, ‘’, $chaine);dans ce cas le site s'affiche mais ma chaine n'apparaît plus ou vide.Je vais regarder aux string special unicode.Encore merci à vous Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now