Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/05/2007, 20h40   #1
Membre du Club
 
Inscription : janvier 2007
Messages : 236
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 236
Points : 62
Points : 62
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 :
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);
?>

@++
CaviarNAS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2007, 14h32   #2
Membre chevronné
 
Avatar de Korko Fain
 
Étudiant
Inscription : août 2005
Messages : 632
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2005
Messages : 632
Points : 632
Points : 632
Code php :
preg_match_all('#\b(.*\s+){2,}\s$1\b#', $chaine, $matches);

Pas sur du tout de mon coup mais faut essayer ^^
Korko Fain est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h52.


 
 
 
 
Partenaires

Hébergement Web