IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Accéder à chaque caractère d'une chaîne utf-8


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    comedien
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : comedien
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Accéder à chaque caractère d'une chaîne utf-8
    Bonjour,

    J'espère être au bon endroit...

    Voilà, j'ai une chaîne de caractères qui peut-être assez longue. Elle est en utf-8.

    J'ai besoin d'accéder à chacun des caractères. Avec de l'iso, je peux y accéder par son indice ($chaine[$x]); ce qui n'est plus possible avec les caractères multi-octets.

    J'avais pensé utiliser uft_decode qui me transcrit ma chaîne en ISO-8859-1; mais je risque de perdre certains caractères comme l'euro par exemple (d'ailleurs que deviennent-il ?)


    Une méthode ?

    J'ai cherché et pas trouvé, et du coup, suis bloqué.

    Merci .

    EDIT : J'ai trouvé la fonction mb_convert_encoding qui me permettrait éventuellement de transformer ma chaîne en ISO-8859-15 (avec l'euro entre autres).

    Je fais ensuite mon accès caractère par caractère, puis je recode en utf-8 avec la même fonction.
    Ça me semble pouvoir fonctionner pour la majorité des cas; mais que ce passe-t'il s'il y a dans la chaîne un caractère qui n'est pas dans ma table ISO ? Vais-je le retrouver quand je remettrai ma chaîne en utf-8 (je vois pas trop comment ce serait possible) ?

    De plus, ça me semble un peu lourd comme méthode; une autre idée ?

    Merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Tu as testé avec mb_substr dans une boucle?

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    sans trop me tromper :

    J'ai besoin d'accéder à chacun des caractères
    jusqu'à preuve du contraire si tu es sur un fichier en utf8 qui accède à des données utf8, le comparateur sera utf8, non?

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $string = utf8_decode("ma chaine comprenant un €");
     
    if( substr($string,strlen($string)-1 ,strlen($string))===utf8_decode("€")){
     
    	echo "€ trouvé";
    }else{
     
    	echo "€ non trouvé";
    }
    Conception / Dev

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    +1 pour le mb_substr dans une boucle. Pour tout ce qui est gestion des chaînes avec des caractères multi-octects, il existe en effet toutes les fonctions de type "mb_" (la doc). Nécessite l'activation de l'extension mbstring.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/03/2008, 04h17
  2. Réponses: 5
    Dernier message: 08/03/2006, 22h20
  3. Réponses: 5
    Dernier message: 03/02/2006, 18h47
  4. Changer chaque caractère d'une chaîne
    Par YanK dans le forum Langage
    Réponses: 13
    Dernier message: 08/07/2005, 19h01
  5. [String] Remplacement caractères dans une chaîne
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 4
    Dernier message: 19/07/2004, 11h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo