Poppy Posté 21 Mai 2005 Partager Posté 21 Mai 2005 Bonjour Le but de mon script est de trouver le nombre d'occurrence de chaque mots dans un fichie .txt. Le problème est que je voudrai ne pas traiter un liste de mots ($mots_bannis). Comment faire ? // Ouverture du fichier$filename = "chap.txt";$handle = fopen ($filename, "rb");$chaine = fread ($handle, filesize ($filename));fclose ($handle);$chaine = strtolower($chaine);// Remplace les lignes par des espaces$chaine = preg_replace('/\n+/', ' ', $chaine);// Remplace les espaces par un seul espace$chaine = preg_replace('/\s\s+/', ' ', $chaine);$mots = explode(" ", $chaine);$mots = array_count_values($mots);arsort($mots);$mots_bannis = array('de', 'le', 'à', 'les', 'l\'', 'de', 'des', 'la'); foreach ($mots AS $mot => $frequence) { echo "$mot : $frequence<br />\n"; //mysql_query("INSERT INTO `occurence` ( `id` , `mot` , `occurence` , `chapitre` ) VALUES ('', '$mot', '$frequence', '1')"); } Merci d'avance bcp Lien vers le commentaire Partager sur d’autres sites More sharing options...
Country Posté 21 Mai 2005 Partager Posté 21 Mai 2005 En ajoutant ceci devant la requete SQL ça devrai marcher je pense : if(!in_array($mot,$mots_bannis)) mysql_query(...); Ainsi la requete ne sera exécutée que si le mot ne se trouve pas dans le tableau. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 21 Mai 2005 Partager Posté 21 Mai 2005 Pour cela, il faut que tu prennes chaque mot de ton premier tableau, et que tu le compares à chaque mot de ton second tableau, le tout sans espaces. Ca donnerait : // Remplace les espaces par un seul espace$chaine = preg_replace('/\s\s+/', ' ', $chaine);$mots = explode(" ", $chaine);$mots_bannis = array('de', 'le', 'à', 'les', 'l\'', 'de', 'des', 'la');$nouveau_tableau_mots=array();foreach($mots as $k => $v){ $on_garde_ce_mot=TRUE; foreach($mots_bannis as $k2=>$v2) if ($v2==$v) $on_garde_ce_mot=FALSE; if ($on_garde_ce_mot==TRUE)array_push($nouveau_tableau_mots,$v);}$mots = $nouveau_tableau_mots;$mots = array_count_values($mots);arsort($mots);foreach ($mots AS $mot => $frequence){etc... Pas essayé, mais l'idée y est Anonymus. Edit : On s'prend bien la tête, des fois Lien vers le commentaire Partager sur d’autres sites More sharing options...
Poppy Posté 21 Mai 2005 Auteur Partager Posté 21 Mai 2005 Anonymus, la solution de Country n'est pas bonne ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Anonymus Posté 21 Mai 2005 Partager Posté 21 Mai 2005 Si, et beaucoup plus simple. Je ne sais pas où je suis allé chercher tout ca, moi Lien vers le commentaire Partager sur d’autres sites More sharing options...
YannCo Posté 21 Mai 2005 Partager Posté 21 Mai 2005 Il est beaucoup plus simple de faire compliqué ) et après on s'étonne que ça bug lol En tout cas c'est cool car ça va peut être me servir, tout comme de nombreuses petites astuces que j'ai trouvé par ci par là sur le HUB de quoi faire encore plus de bugs Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant