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); ?>![]()
@++
Partager