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

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

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Points : 64
    Points
    64
    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 : 58
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    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 du Club
    Homme Profil pro
    Consultant en propriété intellectuelle
    Inscrit en
    Janvier 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Royaume-Uni

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Points : 64
    Points
    64
    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 : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    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;
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    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 : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    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 ?
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 868
    Points : 16 258
    Points
    16 258
    Par défaut
    Effectivement. D'ailleurs, je me demande dans quel cas on pouvait passer dans cette condition, étant donné que in_array() ne teste pas les clés mais les valeurs, et $word n'est jamais dans une valeur.

  8. #8
    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 : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Effectivement. D'ailleurs, je me demande dans quel cas on pouvait passer dans cette condition, étant donné que in_array() ne teste pas les clés mais les valeurs, et $word n'est jamais dans une valeur.
    Et oui, j'ai fait une erreur d'inattention, il fallait coder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (array_key_exists($word, $arr))
        $arr["$word"] = $arr["$word"] + 1; // syntaxe ol'school beaucoup plus claire à mon avis
    else 
        $arr["$word"] = 1;
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

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

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

    Informations forums :
    Inscription : Janvier 2008
    Messages : 88
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par jml94 Voir le message
    Et oui, j'ai fait une erreur d'inattention, il fallait coder :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (array_key_exists($word, $arr))
        $arr["$word"] = $arr["$word"] + 1; // syntaxe ol'school beaucoup plus claire à mon avis
    else 
        $arr["$word"] = 1;
    Ca marche impec

    Merci

+ 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