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 :

Utilisation de la fonction "preg_match_all" avec des apostrophe ou des œ [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Utilisation de la fonction "preg_match_all" avec des apostrophe ou des œ
    Bonjour,

    J'utilise la fonction "preg_match_all" comme ceci :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $chaine="Association : COMITE DES FETES LOISIRS ET SPORTS DE VERGETOT.
    No de parution : 20070017
    Département (Région) : Seine-Maritime (Haute-Normandie)
     
    Lieu parution : Déclaration à la sous-préfecture du Havre.
    Type d'annonce : ASSOCIATION/DISSOLUTION
     
     
    Déclaration à la sous-préfecture du Havre. COMITE DES FETES LOISIRS ET SPORTS DE VERGETOT. Siège social : 14, route de l’Orme, 76280 Vergetot. Date de la déclaration : 7 décembre 2006.";
    $masque = "/(Association : |Date de la déclaration : |Siège social : |nouvelle adresse : )([^\#]*)/m";
     
    preg_match_all($masque, $chaine, $retour);

    Au niveau du retour j'ai bien les champs rechercher.

    Mais j'ai remarqué que la fonction déconnait dès qu'elle rencontrait un caractère particulier comme dans cette exemple l'apostrophe mais elle déconne aussi sur des "œ". Je ne sais pas si cela vient de la regex ou si la fonction présente ce genre de bug...

    Merci d'avance pour vos indications.

    Arnaud

  2. #2
    Membre actif Avatar de frol
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 288
    Points : 296
    Points
    296
    Par défaut
    quand elle les rencontre ou?
    soit plus clair

    Frol

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    bah par exemple j'ai cette chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sociation : COMITE DES FETES ET ACTION SOCIALE.#
    No de parution : 20060046
    Département (Région) : Eure (Haute-Normandie)
     
    Lieu parution : Déclaration à la préfecture de l'Eure.#
    Type d'annonce : ASSOCIATION/MODIFICATION
     
     
    Déclaration à la préfecture de l’Eure.# COMITE DES FETES ET ACTION SOCIALE.# Siège social : 2, route d’Evreux, 27400 Quatremare.# Date de la déclaration : 25 octobre 2006.#
    Je demande à la fonction "preg_match_all" de me recherché l'information qui à un début "Siège social :" et une fin ".#", soit l'information suivante : "Siège social : 2, route d’Evreux, 27400 Quatremare."

    malheureusement la fonction "preg_match_all" je récupère juste ""Siège social : 2, route d".

    J'avais donc pensé à changer les apostrophes par un caractère comme un $ ou autre qui après rechanger les $ par des apostrophes pour ne pas me prendre la tête avec cette connerie car les aphostrophe était surement interprété par PHP, mais j'ai remarqué aussi ce genre de bug quand la chaine recherché comportait un "œ" (un bœuf) ("œ" et NON "oe"). Donc je me dis que ce problème est tout de même bizarre

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 318
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 318
    Points : 15 659
    Points
    15 659
    Par défaut
    Citation Envoyé par arnaudperfect Voir le message
    Je demande à la fonction "preg_match_all" de me recherché l'information qui à un début "Siège social :" et une fin ".#", soit l'information suivante : "Siège social : 2, route d’Evreux, 27400 Quatremare."

    malheureusement la fonction "preg_match_all" je récupère juste ""Siège social : 2, route d".
    montre nous le code PHP que tu utilises pour tester ça

    Citation Envoyé par arnaudperfect Voir le message
    J'avais donc pensé à changer les apostrophes par un caractère comme un $ ou autre qui après rechanger les $ par des apostrophes pour ne pas me prendre la tête avec cette connerie car les aphostrophe était surement interprété par PHP, mais j'ai remarqué aussi ce genre de bug quand la chaine recherché comportait un "œ" (un bœuf) ("œ" et NON "oe"). Donc je me dis que ce problème est tout de même bizarre
    ça ressemble à un problème d'encodage, l'expression régulière doit être dans le même encodage que le texte que tu analyses

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    bon j'ai trouvé le probleme !

    cela était du à mon délimiteur de fin "#" de ma regex qui causait des bugs ! j'ai changer mon délimiteur par un autre qui ne soit pas interprété dans la regex et auquel j'étais sur de ne pas trouvé dans les source d'information auquel je fesais des recherches. J'ai mis tout bêtement le signe € !

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

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