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 :

Preg_match d'une partie d'une expression [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Preg_match d'une partie d'une expression
    Bonjour à tous,

    J'ai un nouveau problème que je vais essayer de traiter en Regex

    J'ai un $texte :

    "J'aime les belles roses de manhattan surtout quand je suis dehors pour les admirées."

    J'ai une $expression :

    "roses de new york manhattan"

    Ce que je veux : Utiliser un preg_match($expression,$texte) en admettant une marge d'erreur. Si au moins trois mots de mon expression sont dans le texte et consécutifs, je veux qu'il renvoie TRUE.

    A vos claviers

    D'avance, merci aux experts.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    pas jouable selon moi avec une regExp
    voir plutot du coté de strrpos fait en boucle sur un explode ...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Je tente avec les RegEx
    Bonjour SpaceFrog,

    ce qui m'ennuie avec strrops() et companie, c'est qu'il détecte la derniere ou la premiere occurence trouvée donc si dans mon texte j'ai plusieurs fois le mot "le", il va pas forcément trouvé le bon (celui qui correspond à mon expression).

    Ce que je pense faire :

    Séparé mon expression en deux tableaux :

    - un tableau avec les mots <= 3 lettres + l'espace et le point ==> $tab_3_inf
    _ un tableau avec les morts > 3 lettres ==>$tab_3_sup

    Ensuite, je fais un implode pour chaque tableau avec caractère de séparation '|' ==>[COLOR="rgb(72, 209, 204)"]$Reg_3_inf[/COLOR] et $Reg_3_sup

    Apres je fais le preg_match('/$Reg_3_sup$Reg_3_inf{3,3}/',$texte).

    Pour traduire, je regarde si les mots de plus de lettres sont dans le texte et consécutifs et j'autorise qu'ils soient séparés par les mots de liaison quelconques ou l'espace ou un point.

    J'attend vos critiques ^^

    P.S : j'ai un soucis d'affichage en prévisualisation pour le bleu :o

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Pour ceux que ca intéresse
    Je crois que ca marche pas trop mal,

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    $texte="le rouge et le bateau de france.";
     
    $expression=array('le','petit','bateau','de','france','tout','rouge','et');
     
     
    foreach($expression as $word)
    	{
    		if (strlen($word)<=3)//Si le mot est un mot de liaison (moins de trois lettes)
    			{
    				$tab_inf[]=$word;//On le place dans le tableau des mots de liaisons.
    			}
    		else
    			{
    				$tab_sup[]=$word;//Sinon on le met dans le tableau des mots clés.
    			}
    	}
     
     
     
    $reg_inf=implode('|',$tab_inf);//On cnstruit le tableau avec des | qui veut dire "ou" pour les deux tableaux.
    $reg_sup=implode('|',$tab_sup);
    if (preg_match("/(([ ]|\.|$reg_inf){0,5}($reg_sup)([ ]|\.|$reg_inf){0,5}){3,10}/",$texte))
    	{
    		echo "yes";
    	}
    else
    	{
    		echo "merde";
    	}

    Content de moi

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

Discussions similaires

  1. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  2. Réponses: 1
    Dernier message: 04/04/2008, 12h14
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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