in_array() et caractères accentués...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : in_array() et caractères accentués...

Re: in_array() et caractères accentués...

par xTG » 27 déc. 2010, 17:20

Le meta n'est pas interprété par le serveur, mais par le navigateur ! Le PHP s'exécute avant d'arriver au navigateur.
C'est dans le php.ini que tu trouveras l'encodage utilisé par PHP, ou bien en le modifiant le temps d'un script avec ini_set().

Re: in_array() et caractères accentués...

par Nitroman70 » 27 déc. 2010, 12:52

Est-ce que cela fonctionnerait si j'utilisais le charset latin1 ou latin9 (codés sur un seul octet) à la place d'UTF-8 ?

J'ai mis ceci dans le header de la page :
<meta http-equiv="Content-Type" content="text/html; charset="iso-8859-1">

mais ça ne fonctionne pas mieux et la page semble toujours utiliser l'utf8. Y a t'il autre chose à faire ?

Re: in_array() et caractères accentués...

par Nitroman70 » 27 déc. 2010, 10:17

Déjà essayé, ça ne fonctionne pas... :(

En fait, c'est très approximatif.
Imaginons que je mette dans mon tableau les caractères "é", "è", "ê", "à", "ù" et "ç".

J'exécute la fonction suivante : in_array(mb_strtolower("é",UTF-8), $tableau), j'obtiens bien TRUE. Par contre, si j'exécute in_array(mb_strtolower("语",UTF-8), $tableau), j'obtiens TRUE également... et j'obtiens FALSE avec des caractères type "+" "_" (ce qui est normal, mais c'est pour montrer que ça ne retourne pas toujours vrai).

Re: in_array() et caractères accentués...

par xTG » 25 déc. 2010, 12:24

J'ai parcouru la documentation et j'ai trouvé ça :
vladimir at vingrad dot ru
14-Nov-2009 11:14
This function has Problem with UTF-8. To solve this Problem use:

in_array( mb_strtolower($tag, "UTF-8"), $arr)
A essayer.

Re: in_array() et caractères accentués...

par Nitroman70 » 24 déc. 2010, 16:56

J'ai essayé de convertir la chaine avec utf8_encode avant de l'utiliser, mais ça ne change rien...

Re: in_array() et caractères accentués...

par xTG » 24 déc. 2010, 16:40

Ne serais-ce pas un problème d'encodage ?
Ce que tu places dans l'array et ce que tu compares est-il bien en utf8 ?

in_array() et caractères accentués...

par Nitroman70 » 24 déc. 2010, 16:37

Bonjour,

je suis actuellement en train de développer une petite application PHP, et je rencontre un problème avec la fonction in_array(). En effet, celle-ci renvoie toujours FALSE quand il s'agit de déterminer si un caractère accentué est présent dans un tableau.

Existe-t'il un moyen de corriger le problème, ou bien une fonction alternative qui serait compatible avec ces caractères ?
Merci d'avance pour votre aide (et joyeuses fêtes au passage :) )