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 :

Repérer les expressions répétitives


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2007
    Messages
    248
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 248
    Points : 101
    Points
    101
    Par défaut Repérer les expressions répétitives
    Salut...
    Je bosse sur un parseur de fichiers html en ce moment ... j'ai en vue de repérer les expressions répétées dans une page...

    bon l'idée est de repérer par exemple les expressions à 2 3 ou 4 mots répétés dans une phrase...

    j'ai pondu un petit script qui fonctionne mais il n'est vraiment pas optimisé ...pour le moment ça détecte les expressions de deux mots ...mais c'est en dur .. alors bof bof .. j'aimerai bien passer par les regex mais j'ai du mal à trouver la méthode ...la regex en commentaires par exemple extraits les mots deux à deux mais en continuant la phrase à chaque fois et non as en partant du mot courant .. je suis passé par un explode mais ça perds beaucoup en dynamisme vu que jaimerai pouvoir envoyer à ma fonction un chiffre qui serait le nombre de mots que l'expression doit comporter ... pour pouvoir facilement détecter les expressions à 2 3 4 ou 5 mots par ex ...

    je vous livre mon script ..si qq'un a une idée pour rendre cela plus dynamique via regex ce serai super
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    <?php
    // euh ...c'est juste pour rire cette phrase ..Me renez pas pour un démago
    $str = 'je suis fort je suis fort je suis beau je suis con il est fort je je';
     
    // fonction qui vas repérer les groupes de mots répétés dans une phrase
    function make_grp($str) {
    // crée un tableau de groupes de mots
     
    //preg_match_all('%((\w+)\s){2}%i',$str, $out);
    //print_r($out);
     
     
    $tabstr = explode ( ' ',$str);
    //print_r($tabstr);
     
    //extraction des mots deux à deux
    foreach ($tabstr as $key => $value) {
    if (isset($tabstr[$key+1])) {
        $out[] = trim($value.' '.$tabstr[$key+1]);
        }
    }
    print_r($out);
    echo'<br /><br /><br />';
     
    // on compte le nombre d'expressions multiples
    foreach ($out as $key => $value) {
        $c = substr_count( $str,$value);
        if ($c > 1) {
        $result[$value] = $c;
        }
    }
    print_r($result);
     
    }
     
    make_grp($str);
    ?>

    @++

  2. #2
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('#\b(.*\s+){2,}\s$1\b#', $chaine, $matches);

    Pas sur du tout de mon coup mais faut essayer ^^

Discussions similaires

  1. Comment trier un tableau, et repérer les doublon?
    Par danje dans le forum Langage
    Réponses: 4
    Dernier message: 17/08/2005, 18h45
  2. [langage] Les expressions régulières
    Par BENCHEKROUN dans le forum Langage
    Réponses: 12
    Dernier message: 20/05/2005, 17h22
  3. Bug dans les expressions régulières ?
    Par SergioF dans le forum Linux
    Réponses: 8
    Dernier message: 12/05/2004, 15h14

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