Aller au contenu

Remplacement et tableaux


Poppy

Sujets conseillés

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 :blush:

Lien vers le commentaire
Partager sur d’autres sites

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

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 :D

Lien vers le commentaire
Partager sur d’autres sites

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 :D

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...