Aller au contenu

Enlever tous les caractères spéciaux d'une chaîne


Sujets conseillés

Posté

Bonjour,

Je suis à la recherche d'une fonction php qui me permettrait d'enlever tous les caractères spéciaux d'une chaîne de caractères (lettres accentuées, cédille, points d'exclamation, d'interrogation...).

Je sais que je pourrai le faire moi-même (en utilisant la fonction str_replace()), mais c'est plutôt fastidieux... et je ne penserai peut-être pas à tous les caractères ;-) !

Merci d'avance, Antoine

Posté

Bonjour et bienvenue sur le forum,

Tu devrais trouver ton bonheur avec la fonction htmlentities

Posté (modifié)

Merci pour la réponse rapide !

Mais là , la fonction htmlentities ne supprime pas les lettres accentuées ni autres caractères spéciaux...

Antoine

Modifié par AntoineI
Posté

En fait, ce que je veux, c'est :

- j'ai une chaîne de caractère, avec des accents, des points d'exclamation

- une fonction la transforme en supprimant tous les caractères "spéciaux", c'est à dire qui ne sont pas dans l'alphabet, donc en supprimant les accents, les points d'exclamation.....

Je recherche donc cette fonction "miracle".

Si j'ai bien compris, ça correspond pas trop à ce que tu expliques sur ton blog. Ou alors j'ai mal compris (c'est possible aussi ;-)).

Antoine

Posté

effectivement,

ma fonction fait tous les caractères (latins et spéciaux) sauf les points d'exclamations etc...

Il n'y a pas beaucoup de caracs super-spéciaux, tu peux les lister.

En tous cas, cette fonction php n'existe pas en natif.

Posté

Dommage .... mais tant pis !

Je vais devoir lister tout à la main, ce qui n'est pas une fin en soi, mais un peu fastidieux... il ne faut pas oublier de caractères...

Antoine

Posté

Bonjour,

dans la discussion http://www.webmaster-hub.com/index.php?sho...findpost&p=3572

il était question d'une fonction

function enleve_accent($chaine){ 
 $chaine = strtr($chaine,  "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",  "aaaaaaaaaaaaooooooooooooeeeeeeeecciiiiiiiiuuuuuuuuynn");
 return $chaine;
 }
// Ensuite, le test :
$mot = "Général Agla&iumla";
echo  enleve_accent($mot);

que tu peux aisément modifier, et dont tu peux te resservir.

Posté

Ooops désolé Antoine, il semble que je t'ai mis sur une mauvaise piste.

Mais si tu fais:

$chaîne = "idée";
$chaine_convertie = htmlentities($chaîne);

... tu obtiens bien: $chaine_convertie=="idée"

Je me disais qu'en traitant ensuite la chaine avec la fonction inverse html-entity-decode et en utilisant un jeu de caractères ignorant les caractères accentués il devait être possible d'obtenir "idee"... Visiblement à tort :blush:

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...