Aller au contenu

Remplacement et tableaux


Sujets conseillés

Posté

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:

Posté

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.

Posté

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

Posté

Si, et beaucoup plus simple.

Je ne sais pas où je suis allé chercher tout ca, moi :lol:

Posté

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

Veuillez vous connecter pour commenter

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



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