Poppy Posté 21 Mai 2005 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
Country Posté 21 Mai 2005 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.
Anonymus Posté 21 Mai 2005 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
Anonymus Posté 21 Mai 2005 Posté 21 Mai 2005 Si, et beaucoup plus simple. Je ne sais pas où je suis allé chercher tout ca, moi
YannCo Posté 21 Mai 2005 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant