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 :

Utiliser une expression régulière avec des accents


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 414
    Points : 871
    Points
    871
    Par défaut Utiliser une expression régulière avec des accents
    bonjour,

    j'utilise une expression régulière pour obtenir un acronyme d'une chaine de caractère.
    elle marche très bien, même avec les apostrophes mais elle dysfonctionne avec les accents.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $source=strtoupper("c'est l'été");
    if(preg_match_all('/\b(\w)/',$source,$tableau))
    {
    $acronyme = implode('',$tableau[1]); 
    }

    acronyme vaut :
    CEL?T



    Je suis en PHP 7.3, le charset HTML de la page est UTF-8 , le champs db est utf8mb4_general_ci . J'avais essayé de mettre $source=mb_strtoupper("c'est l'été","utf-8") mais ça n'a rien changé au problème.

    avez-vous une idée du problème ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 343
    Points : 697
    Points
    697
    Par défaut
    Bonjour,

    Préfère si possible l'utilisation des fonctions mb_* pour les chaines multi-octets (avec des accents par exemple), tu dois avoir un résultat différents selon la fonction utilisée : var_dump(strtoupper("c'est l'été")); différent de var_dump(mb_strtoupper("c'est l'été"));

    Pense à ajouter le modifieur "u" (PCRE_UTF8) dans le pattern : preg_match_all('/\b(\w)/u', $source, $tableau)
    https://www.php.net/manual/en/refere....modifiers.php

  3. #3
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 882
    Points : 6 613
    Points
    6 613
    Par défaut
    Tu peux aussi utiliser le transliterator d'intl pour regrouper plusieurs modifications de chaîne. Il gère très bien l'UTF-8:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tsl = Transliterator::createFromRules(':: NFC ; [[:L:]] { [[:L:]]+ > ; :: Upper() ; ::[^[:L:]] Remove() ;');
    echo  $tsl->transliterate("c'est l'été"); // CELÉ
    demo
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/10/2010, 20h14
  2. [HTML][Encodage] Problèmes avec les accents...
    Par eraim dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 26/05/2004, 10h11
  3. Ecrire caractère avec les accents avec vi ?
    Par sekiryou dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 18/05/2004, 17h11
  4. [JDBC] Problème avec les accents
    Par seawolfm dans le forum Administration
    Réponses: 2
    Dernier message: 29/01/2004, 14h56
  5. [CR9] Bug avec les champs à valeur vide ?
    Par Djob dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 15/07/2003, 21h21

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