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

JavaScript Discussion :

compter les mots [RegExp]


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Par défaut compter les mots
    Bonjour à tous, après un peu de recherche je tombe sur se topique...

    Mon problème est que je fais un comptage de mot en php en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	static function countWords($str)
    	{	
    	     $words = 0;
    	     $str = @eregi_replace(" +", " ", $str);
    	     $array = explode(" ", $str);
    	     for($i=0;$i < count($array);$i++)
    	 	 {
    	         if (@eregi("[0-9A-Za-zÀ-ÖØ-öø-ÿ]", $array[$i])) 
    	             $words++;
    	     }
    	     return $words;
    	 }
    Et j'aimerais donc compter les mots de la même manière en js et je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	countWord: function (text)
    	{
    		var regex = new RegExp("[0-9A-Za-zÀ-ÖØ-öø-ÿ]+", "g");
    		text = text.match(regex);
    		var nb_words = text.length;
    		return nb_words;
    	}
    Mais je n'obtiens pas le même nombre de mots à la fin auriez-vous une idée ?

    Merci d'avance !!

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    eregi ça existe encore?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    phrase="Suspendisse porta, diam ac laoreet sollicitudin, risus risus hendrerit mi, commodo tincidunt est turpis eu lacus. Phasellus sed dolor et est tempus tempor. Duis venenatis, ligula in blandit auctor, tortor lacus mattis ipsum, nec."
    tabmots=phrase.match(/\b\w+\b/g)
    alert (tabmots)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Par défaut
    Je n'ai pas trop la main sur ça je veux bien utiliser ta méthode mais le but et de compter les mots de la même manière que se soit en js ou en php.

    Aurais-tu une idée ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ben utilise la même regexp et la même methode des deux cotés

    \b\w+\b

    et preg_match en php
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Par défaut
    bon je dois être nul ça ne fonctionne pas je vais faire quelque et j'espère réussir ...

  6. #6
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Et avec un split éventuellement ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nb = txt.split(" ").length
    et l'équivalent en php avec explode...

    ...pas suffisant ?

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    ça zappe les apsotrophes ...tirets etc
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Oui mais la tienne ne tient pas compte des accents
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  10. #10
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var toto = /\b/g;
    alert('abcdef'.match(toto).length);
    alert('abédef'.match(toto).length);
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    pas si tout est en utf8 et que tu rajoutes le modifer u
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  12. #12
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    SyntaxError: invalid regular expression flag u


    Spaffy, c'est quand même pas à toi que l'on va apprendre qu'en JavaScript, les seuls flags autorisés sont i, g et m
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    Desole réveillé à 4h00 ce matin
    et trop de php récemment

    Bon ben je me fais mon \b tout seul ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var toto = /[^ .,:?!+_\/()[\]-]+/g;
    alert('ab c def'.match(toto).length);
    alert('ab é def'.match(toto).length);
    bien entendu compléter la liste des séparateurs de mots
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Par défaut Résolu ...
    Donc voilà ma méthode pour compter les mots en php et en js de la mème manière:

    en php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static function countWords($str)
    {	
        return count(preg_split('/[\s,]+/',$str));
    }
    En js c'est un peu plus complexe mais j'ai trouvé un petit code sympa sur internet :

    ah oui c'est en jquery ...

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    	countWord: function (theString)
    	{
    		var words = Core.preg_split(/[\s,]+/,theString);
    		return words.length;
    	},
     
    	preg_split: function (pattern, subject, limit, flags) {
    	    // http://kevin.vanzonneveld.net
    	    // + original by: Marco Marchiò
    	    // * example 1: preg_split(/[\s,]+/, 'hypertext language, programming');
    	    // * returns 1: ['hypertext', 'language', 'programming']
    	    // * example 2: preg_split('//', 'string', -1, 'PREG_SPLIT_NO_EMPTY');
    	    // * returns 2: ['s', 't', 'r', 'i', 'n', 'g']
    	    // * example 3: var str = 'hypertext language programming';
    	    // * example 3: preg_split('/ /', str, -1, 'PREG_SPLIT_OFFSET_CAPTURE');
    	    // * returns 3: [['hypertext', 0], ['language', 10], ['programming', 19]]
    	    // * example 4: preg_split('/( )/', '1 2 3 4 5 6 7 8', 4, 'PREG_SPLIT_DELIM_CAPTURE');
    	    // * returns 4: ['1', ' ', '2', ' ', '3', ' ', '4 5 6 7 8']
    	    // * example 5: preg_split('/( )/', '1 2 3 4 5 6 7 8', 4, (2 | 4));
    	    // * returns 5: [['1', 0], [' ', 1], ['2', 2], [' ', 3], ['3', 4], [' ', 5], ['4 5 6 7 8', 6]]
     
    	    limit = limit || 0; flags = flags || ''; // Limit and flags are optional
     
    	    var result, ret=[], index=0, i = 0,
    	        noEmpty = false, delim = false, offset = false,
    	        OPTS = {}, optTemp = 0,
    	        regexpBody = /^\/(.*)\/\w*$/.exec(pattern.toString())[1],
    	        regexpFlags = /^\/.*\/(\w*)$/.exec(pattern.toString())[1];
    	        // Non-global regexp causes an infinite loop when executing the while,
    	        // so if it's not global, copy the regexp and add the "g" modifier.
    	        pattern = pattern.global && typeof pattern !== 'string' ? pattern :
    	            new RegExp(regexpBody, regexpFlags+(regexpFlags.indexOf('g') !==-1 ? '' :'g'));
     
    	    OPTS = {
    	        'PREG_SPLIT_NO_EMPTY': 1,
    	        'PREG_SPLIT_DELIM_CAPTURE': 2,
    	        'PREG_SPLIT_OFFSET_CAPTURE': 4
    	    };
    	    if (typeof flags !== 'number') { // Allow for a single string or an array of string flags
    	        flags = [].concat(flags);
    	        for (i=0; i < flags.length; i++) {
    	            // Resolve string input to bitwise e.g. 'PREG_SPLIT_OFFSET_CAPTURE' becomes 4
    	            if (OPTS[flags[i]]) {
    	                optTemp = optTemp | OPTS[flags[i]];
    	            }
    	        }
    	        flags = optTemp;
    	    }
    	    noEmpty = flags & OPTS.PREG_SPLIT_NO_EMPTY;
    	    delim = flags & OPTS.PREG_SPLIT_DELIM_CAPTURE;
    	    offset = flags & OPTS.PREG_SPLIT_OFFSET_CAPTURE;
     
    	    var _filter = function(str, strindex) {
    	        // If the match is empty and the PREG_SPLIT_NO_EMPTY flag is set don't add it
    	        if (noEmpty && !str.length) {return;}
    	        // If the PREG_SPLIT_OFFSET_CAPTURE flag is set
    	        // transform the match into an array and add the index at position 1
    	        if (offset) {str = [str, strindex];}
    	        ret.push(str);
    	    };
    	    // Special case for empty regexp
    	    if (!regexpBody){
    	        result=subject.split('');
    	        for (i=0; i < result.length; i++) {
    	            _filter(result[i], i);
    	        }
    	        return ret;
    	    }
    	    // Exec the pattern and get the result
    	    while (result = pattern.exec(subject)) {
    	        // Stop if the limit is 1
    	        if (limit === 1) {break;}
    	        // Take the correct portion of the string and filter the match
    	        _filter(subject.slice(index, result.index), index);
    	        index = result.index+result[0].length;
    	        // If the PREG_SPLIT_DELIM_CAPTURE flag is set, every capture match must be included in the results array
    	        if (delim) {
    	            // Convert the regexp result into a normal array
    	            var resarr = Array.prototype.slice.call(result);
    	            for (i = 1; i < resarr.length; i++) {
    	                if (result[i] !== undefined) {
    	                    _filter(result[i], result.index+result[0].indexOf(result[i]));
    	                }
    	            }
    	        }
    	        limit--;
    	    }
    	    // Filter last match
    	    _filter(subject.slice(index, subject.length), index);
    	    return ret;
    	},

  15. #15
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    heu et les ; : - ' ??

    enfin c'est toi qui sait ce que tu veux splitter .
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  16. #16
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2011
    Messages : 7
    Par défaut
    Je veux juste compter les mots comme le fait un fichier word en sachant que word vois
    ...
    comme un mot je sais c'est nul mais c'est ce dont j'ai besoin et j'ai trouvé ;-) enfin je m'en suis grandement rapproché !!

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

Discussions similaires

  1. Compter les mots d'une phrase
    Par miss64 dans le forum Langage
    Réponses: 12
    Dernier message: 07/01/2017, 10h57
  2. Réponses: 1
    Dernier message: 10/02/2010, 14h08
  3. Compter les mots dans une URL
    Par tochiro dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 27/11/2008, 08h38
  4. Réponses: 9
    Dernier message: 06/06/2007, 23h03
  5. [Collections]Compter les mots différents d'une ArrayList
    Par alanpix dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 21/11/2005, 22h11

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