IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] occurences d'un mot dans un texte


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Par défaut [Tableaux] occurences d'un mot dans un texte
    Voila, j'ai un petit soucis avec mon code.
    Le code compte le nombre de fois qu'un mot apparait dans un texte, lorsque l'élément est trouvé il incremente dans le tableau a la clé, qui est le mot.
    Si il n'est pas trouvé alors on creer une nouvelle case au tableau avec pour clé le nouveau mot.

    Ici il me creer bien les clés du tableau, mais aucun increment n'est fais lorsque l'element est trouvé plusieurs fois ...
    J'ai tenter de mettre la valeur de départ a 0, là l'increment fonctionne (meme si le résultat est faux :/) cependant j'obtiens au debut du code une liste d'erreur comme ceci :

    Notice: Undefined index: bridge in [...] on line 35
    la line 35 est :
    $arr["$word"]++;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    function countOccurences($text)
    {
    	$text = strtolower($text);
    	$text = explode(" ", "$text");
    	$arr = array();
    	for($i=0; $i<count($text); $i++)
    	{
    		$word = trim($text[$i]);
    		if ($word != '')
    		{
    			if(in_array ($word, $arr))
    			{
    				$arr["$word"]++;
    			}
    			else
    			{	
    				$arr["$word"] = 0;
    			}
    		}
    	}
    	return $arr;
    }
    Help me please ... :$

  2. #2
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Peut-être que quelque chose m'échappe mais ne serait-il pas plus simple de partir de cette petite chose toute simple qui fonctionne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    $string = 'Pince-me et Pince-moi sont sur un bateau. Pince-me tombe à l\'eau. Qui reste sur le bateau ? Pince-moi, je rêve !';
    $occ = 'Pince';
    $nb = substr_count ($string, $occ);
    echo $string.'<br/>';
    echo 'Le mot '.$occ.' apparaît '.$nb.' fois dans le texte précédent.';
    ?>
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  3. #3
    Membre confirmé
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en propriété intellectuelle
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Par défaut
    Si je l'ai fais comme ca, c'est parce que dans le programme principale j'affiche un tableau avec clé | Occurence, ce que tu me propose là n'est pas bon pour mon programme...

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (in_array($word, $arr))
        $arr["$word"] = $arr["$word"] + 1; // syntaxe ol'school beaucoup plus claire à mon avis
    else 
        $arr["$word"] = 1;

  5. #5
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    J'aurais plutôt fait ça comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ($word != '')
    {
       if ( !isset( $arr[$word] ) ) {
          $arr[$word] = 0;
       }
     
       if(in_array ($word, $arr)) {
          $arr[$word]++;
       }
    }

  6. #6
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    J'aurais plutôt fait ça comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ($word != '')
    {
       if ( !isset( $arr[$word] ) ) {
          $arr[$word] = 0;
       }
     
       if(in_array ($word, $arr)) {
          $arr[$word]++;
       }
    }
    Dans ce cas, le deuxième test in_array est inutile puisqu'il le word y sera toujours, non ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Preg_replace des occurences d'un mot dans un texte
    Par bruce-willis dans le forum Langage
    Réponses: 7
    Dernier message: 01/09/2010, 14h13
  2. Compter le nombre d'occurences d'un mot dans un texte
    Par AlexandraS dans le forum Langage
    Réponses: 13
    Dernier message: 26/03/2008, 09h12
  3. [Tableaux] Remplacer une seule fois un mot dans un texte.
    Par psychoBob dans le forum Langage
    Réponses: 38
    Dernier message: 24/01/2006, 16h07
  4. Rechercher un mot dans un texte
    Par BernardT dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/12/2005, 08h55
  5. Réponses: 8
    Dernier message: 18/01/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo