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 :

Accentués dans ma regex [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 24
    Par défaut Accentués dans ma regex
    Bonjour,

    J'ai une petite intérrogation. J'ai une regex simple mais qui me complique la vie.

    La regex est :
    preg_match("#\b(temps-là)\b#i", $ligne)


    $ligne = "F : [<sup>1</sup>non mais ils disent ils disent dans ce temps-là là / <P2,L10>";

    Je recherche "temps-là" dans ma ligne et ma regex ne la trouve rien.
    Si je cherche "disent", c'est correct.
    Si je cherche "temps", rien n'est trouvé.
    Si je cherche "là", je n'ai rien.
    Si je cherche "mais ils disent", c'est ok.

    Avez-vous une idée de mon problème ?

    Merci !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    essai avec le modificateur "u" pour la prise en charge d'UTF8
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match("#\b(temps-là)\b#ui", $ligne)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    mon_nom_est_personne
    Invité(e)
    Par défaut
    ou tu peus essayer avec le code hexadecimal \x..
    cf. http://www.pjb.com.au/comp/diacritics.html

    dans ton cas: \xE0

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 24
    Par défaut
    Ça ne fonctionne toujours pas. C'est réellement les "accents" qui me cause problème.

    Je vais détailler mon cas, car ça pourrait peut-être vous aider.

    C'est une recherche où les utilisateurs peuvent entrer jusqu'à 5 mots clés. Dans mon exemple, la ligne réelle est :

    preg_match("#\b($frm_keywords)\b#i", $ligne) où $frm_keywords est la variable contenant les mots séparés par des "|". Le champ de ma table ($ligne) est en latin1_swedish_ci sur mysql.

    C'est bizarre car je recherche les mots "là-bas" dans une phrase et je la trouve.

    Merci de votre aide...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par bobino75 Voir le message
    Je recherche "temps-là" dans ma ligne et ma regex ne la trouve rien. !
    Citation Envoyé par bobino75 Voir le message
    C'est bizarre car je recherche les mots "là-bas" dans une phrase et je la trouve.
    Exemples typiques d'une locale incorrecte.

    Qu'affiche le code suivant sur ton serveur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <pre>
    <?php
     
    $ligne = "F : [<sup>1</sup>non mais ils disent ils disent dans ce temps-là là / <P2,L10>";
    $regex = '#\b(temps-là)\b#i';
     
    echo setlocale(LC_CTYPE, null), PHP_EOL;
    preg_match($regex, $ligne, $capture);
    print_r($capture);
     
    echo setlocale(LC_CTYPE, 'fr_FR.ISO-8859-1'), PHP_EOL;
    preg_match($regex, $ligne, $capture);
    print_r($capture);
     
    ?>
    </pre>

  6. #6
    mon_nom_est_personne
    Invité(e)
    Par défaut
    et utiliser mb_ereg ?

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Septembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 24
    Par défaut
    Citation Envoyé par Tisha Carpenter Voir le message
    Exemples typiques d'une locale incorrecte.

    Qu'affiche le code suivant sur ton serveur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <pre>
    <?php
     
    $ligne = "F : [<sup>1</sup>non mais ils disent ils disent dans ce temps-là là / <P2,L10>";
    $regex = '#\b(temps-là)\b#i';
     
    echo setlocale(LC_CTYPE, null), PHP_EOL;
    preg_match($regex, $ligne, $capture);
    print_r($capture);
     
    echo setlocale(LC_CTYPE, 'fr_FR.ISO-8859-1'), PHP_EOL;
    preg_match($regex, $ligne, $capture);
    print_r(($capture);
     
    ?>
    </pre>

    Voici ce que ça donne :

    CPHP_EOLArray
    (
    )
    fr_FR.ISO-8859-1PHP_EOLArray
    (
    [0] => temps-là
    [1] => temps-là
    )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insérer une variable dans une regex?
    Par Death83 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/05/2006, 11h28
  2. [RegEx] php et javascript dans une regex
    Par grochenel dans le forum Langage
    Réponses: 7
    Dernier message: 06/12/2005, 22h21
  3. Réponses: 6
    Dernier message: 14/07/2005, 14h25
  4. Chaines avec caractères accentués dans interbase
    Par Tsimplice dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2004, 17h12
  5. Chaînes avec des caractères accentués dans Interbase
    Par Invité dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/03/2004, 22h39

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