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

PHP & Base de données Discussion :

help pour un cas de regex


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut help pour un cas de regex
    Bonjour

    je suis novice en matière de regex et je suis malheureusement confrontée à un cas pour lequel je ne trouve pas de solution =(

    je m'explique, je dois récupérer la référence de télévisions perdus dans un ensemble de chaines listées dans une colonne de csv

    pour vous illustrer ma problématique je vous joint ci-dessous les colonnes de mon csv en question :


    Téléviseurs plasma Samsung PS-50C687 + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES
    Téléviseur LCD LE40C750 + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES
    Ecran plasma PS63C7700 + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES
    Ecran plasma TX-P42VT20E - 3D + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES
    Ecran plasma TX-P42GT20E + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES
    Ecran plasma TX-P46VT20E - 3D + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES
    Téléviseur LED 55LX9500 + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES
    Téléviseur LED 47LX9500 + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES
    Téléviseur LED 47LX6500 + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES
    Ecran plasma TX-P42VT20E - 3D + Câble HDMI mâle / HMDI mâle - 2 m (MC380-2M)
    Ecran plasma TX-P42VT20E - 3D + Casque audio sans fil infrarouge Philips SHC2000/00
    Ecran plasma TX-P42GT20E + Lunettes 3D Full HD TY-EW3D10E + Lecteur Blu-ray 3D DMP-BDT300
    Ecran plasma TX-P46VT20E - 3D + Distributeur de 100 chiffonnettes pour écrans LCD
    Ecran plasma TX-P46VT20E - 3D + Câble HDMI-HDMI - plaqué or - 3m
    Ecran plasma TX-P42GT20E + Support mural fixe noir
    Ecran plasma TX-P50VT20E - 3D + Lunettes 3D Full HD TY-EW3D10E + Lecteur Blu-ray 3D DMP-BDT300
    Ecran plasma TX-P42VT20E - 3D
    Ecran plasma TX-P46VT20E - 3D
    Ecran plasma TX-P42GT20E
    Ecran plasma PS50C687 - 3D
    Téléviseur LED 47LX9500
    Téléviseur LED 55LX9500
    Téléviseur LED 47LX6500
    Ecran plasma PS63C7700
    Téléviseur LCD LE40C750 - 3D
    Ecran plasma TX-P50VT20E - 3D


    Le problème étant que je ne sais pas comment récupérer le modele de mes tvs.

    ex pour la première ligne

    Téléviseurs plasma Samsung PS-50C687 + Adaptateur Ethernet vers WiFi-N WNCE2001-100PES

    Je dois récupérer PS-50C687.

    Etant novice en php je suppose quand même qu'il faudra utiliser preg_match. Mais voila je ne sais pas qu'elle regle mettre en place =(

    je sais que ma référence est après les mots suivants : Samsung, LCD, plasma, LED mais apres je ne sais pas comment récupérer ma référence exact car c'est jamais la meme longueur en plus c'est alphanumérique =(

    je suis perdu car ce petit fichier n'est qu'un extrait je ne vois voit pas tout récupérer a la main =((


    sil vous plait quelq'un peut il m'aider?

    merci d'avance !!!


    PS : je precise que toute la partie en amont a savoir le parcour du csv avec la fonction fgetcsv a été fait. c'est juste que pour cette colonne qui correspond dans mon code à $data[3]; j'ai toute la chaine de caractère alors qu'il me faudrait juste la référence de la tv pour l'intégrer en BDD

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    voici une regex pas très belle mais qui devrait marcher :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    preg_match('#(plasma samsung|samsung|plasma|led|lcd)\s([^\s]+)#i', $chaine, $matches);
    echo $matches[2];

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 56
    Par défaut
    bonsoir


    un grand merciiiii Madfrix ta regex a tres bien marché !!!!

    vraiment merci !!! tu ma énormément aidé

    preg_match('#(plasma samsung|samsung|plasma|led|lcd)\s([^\s]+)#i', $chaine, $matches);
    echo $matches[2];

    par contre histoire j'ai du mal a la traduire ^^ est ce que je pourrais t'embeter une dernière fois pour avoir un petit resumé sur cette regex que je la comprenne et puisse la refaire ^^

    une tres bonne soirée a toi

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    une chaine qui est soit :

    plasma samsung ou
    samsung ou
    plasma ou
    led ou
    lcd

    suivie d'un espace traduit par \s

    suivie d'une ou plusieurs caractère qui ne sont pas des espaces [^\s]+
    Le + signifie 1 ou plusieurs
    Le ^ signifie différent

    i à la fin de la regex signifie insensible à la casse

    $matches[0] correspond à toute ta chaine
    $matches[1] correspond à ta premiere parenthese capturante (plasma, led etc)
    $matches[2] correspond à ce que tu récupères dans ([^\s]+) ce qui ici correspond à ta référence cherchée

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    tu peux en faire une non capturante pour plasma, led etc

  6. #6
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    C'est vrai

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    preg_match('#(?:plasma samsung|samsung|plasma|led|lcd)\s([^\s]+)#i', $chaine, $matches);
    echo $matches[1];

    Par contre aucune idée si c'est plus optimisé niveau temps

Discussions similaires

  1. Need help pour installer upgrade linux Debian
    Par jejerome dans le forum Administration système
    Réponses: 2
    Dernier message: 26/03/2006, 19h26
  2. HELP pour les Racourci clavier en c++
    Par jamesleouf dans le forum C++
    Réponses: 6
    Dernier message: 20/03/2006, 11h32
  3. HELP POUR LES COMPOSANT
    Par Bruxor dans le forum Composants VCL
    Réponses: 8
    Dernier message: 15/12/2005, 19h16
  4. need help pour : boucle & expression régulière
    Par Fabouney dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2005, 02h22
  5. [TP]Help pour insertion d'un image sur tp7 svp !
    Par ilym dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 21/01/2004, 21h00

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