Compter le nombre de mots dans une chaine de caractères

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Skycer666, 19 Mai 2009.

  1. Skycer666
    Skycer666 WRInaute discret
    Inscrit:
    5 Mai 2009
    Messages:
    59
    J'aime reçus:
    0
    Bonjour

    J'aimerai compter le nombre de mots d'une chaine de caractères :
    Pour faire ça, j'utilise la fonction

    Code:
     echo str_word_count($content); 
    Après ça, en faite, j'aimerai faire autre chose.
    Dans une page php, le texte s'affiche sur 2 colonnes enfaite et j'aimerai pouvoir insérer la première moitié de mon texte dans la première colonne et la seconde partie ds la seconde colonne.

    Je me suis dit utilise ça :

    Code:
    $res = strlen($content); /* compte le nombre de [b]caractères[/b] de la chaine */
    	$content2= substr($content,0,$res/2); /* et je divise par 2 pour avoir la moitié */ 
    
    Mais le problèem c'est que ça coupe un mot en plein milieux...?!
    Comment faire pour couper ma chaine a la fin d'un mot plutot !!

    merci de vos idées et de vos solutions
     
  2. le-bon-plan.com
    le-bon-plan.com WRInaute discret
    Inscrit:
    1 Juin 2007
    Messages:
    98
    J'aime reçus:
    0
    L'algorithme doit etre le suivant :

    Obtenir le nombre de caracteres de ta chaine (ca sera bcp plus rapide à l'execution plutot que de compter le nombre de mot)

    Diviser la taille de ta chaine par 2 pour obtenir le caractere centrale de ta chaine.

    Parcourir la chaine de caractere à partir de l'index du milieu de chaine et tester des que tu rencontres un caractere d'espacement.

    L'index du caractere d'espacement te permettra alors de découper ta chaine correctement.

    J'espere avoir ete claire.
     
  3. Skycer666
    Skycer666 WRInaute discret
    Inscrit:
    5 Mai 2009
    Messages:
    59
    J'aime reçus:
    0
    Code:
    $nb_caract=strlen($content);
    $nb_caract=$nb_caract/2;
    
    foreach($content as $nb_caract)
    {
          $last_space = strrpos($chaine, " ");
    }
    
    j'ai essayer de faire une première ebauche mais je vois pas vraiment comment faire ...
     
  4. anemone-clown
    anemone-clown WRInaute passionné
    Inscrit:
    11 Novembre 2007
    Messages:
    1 577
    J'aime reçus:
    20
    Je suis à peu près d'accord avec le-bon-plan, mais je ferais différemment :

    1- déterminer la longueur totale de la chaîne (strlen)
    2- couper la chaîne en deux brutalement (substr)
    3- selon que tu préférerais le premier morceau de chaîne plus court que le second, tu utilises strrpos (dernier) ou strpos (premier) pour trouver le dernier caractère espace (ou d'autres séparateurs) dans la première partie de la chaîne ou le premier séparateur dans la seconde moitié de la chaîne coupée en deux.
    4- ensuite, il suffit de déterminer la position exacte de la césure (faire des plus et moins... attention à l'offset 0 ou 1 parfois) à effectuer dans la chaîne de départ.

    Il y a moyen de simplifier en jouant sur les index de départ des strpos... ;)
     
  5. Skycer666
    Skycer666 WRInaute discret
    Inscrit:
    5 Mai 2009
    Messages:
    59
    J'aime reçus:
    0
    Code:
    // -----------------------------------------
    // Coupe une chaine en fonction du nombre de mots.
    // ----------------------------------------- 
    function couper($chaine, $lg_max)
    {
    	//On vérifie si le texte est plus grand que le nombre de caractères spécifiés
    	if (strlen($chaine) > $lg_max) 
    	//Si la réponse est non le script ne fait rien mais si c'est oui on continue...
    	{
    		$chaine = substr($chaine, 0, $lg_max);
    		
    		//on cherche l'espace le plus proche du maximum des caractères autorisés    
    		$last_space = strrpos($chaine, " "); 
    		
    		//On ajoute ... à la suite de cet espace    
    		$chaine = substr($chaine, 0, $last_space); 
    	}
    	
    	echo $chaine;
    }
    
    Ceci fonctionne pour la première partie de mon texte mais comment je retrouve le mot ou je me suis arreter..
     
  6. anemone-clown
    anemone-clown WRInaute passionné
    Inscrit:
    11 Novembre 2007
    Messages:
    1 577
    J'aime reçus:
    20
    Tu as deux résultats à obtenir, non? ;) Il faut donc travailler sur 2 sous-chaînes...
     
  7. Skycer666
    Skycer666 WRInaute discret
    Inscrit:
    5 Mai 2009
    Messages:
    59
    J'aime reçus:
    0
    Code:
    function couper2($chaine, $lg_max)
    {
    	//On vérifie si le texte est plus grand que le nombre de caractères spécifiés
    	if (strlen($chaine) > $lg_max) 
    	//Si la réponse est non le script ne fait rien mais si c'est oui on continue...
    	{
    		$chaine1 = substr($chaine, 0, $lg_max);
    		
    		
    		//on cherche l'espace le plus proche du maximum des caractères autorisés    
    		$last_space = strrpos($chaine1, " "); 
    		
    		//On ajoute ... à la suite de cet espace    
    		$chaine1 = substr($chaine1, 0, $last_space);
    		$chaine2 = substr($chaine,strlen($chaine1),strlen($chaine));
    	}
    	
    	echo $chaine1;
    	echo $chaine2;
    }
    Voila avec ça sa marche j'ai deux chaines bien couper. merci les Gens
     
Chargement...
Similar Threads - Compter nombre mots Forum Date
Script pour compter et afficher le nombre de mots d'une page Développement d'un site Web ou d'une appli mobile 5 Février 2013
Compter le nombre d'occurrences d'un mot dans un site Google : l'entreprise, les sites web, les services 30 Juillet 2014
COmpter nombre de clic (vs visite) Google Analytics 9 Septembre 2013
Compter le nombre de liens vers une même page Administration d'un site Web 17 Octobre 2011
[PHP/MySQL] Compter le nombre de checkbox cochées Développement d'un site Web ou d'une appli mobile 11 Septembre 2010
Compter le nombre de fois ou une page a été vue Développement d'un site Web ou d'une appli mobile 3 Juin 2010
Compter le nombre de clients à l'aide de Google Analytics Google Analytics 27 Octobre 2009
[PHP] : compter le nombre de requêtes MySQL Développement d'un site Web ou d'une appli mobile 4 Décembre 2008
Compter le nombre de caractères d'une chaine Développement d'un site Web ou d'une appli mobile 12 Juillet 2006
Compter le nombre de caractère que retourne un fichier .php Développement d'un site Web ou d'une appli mobile 5 Février 2006
Compter le nombre d'enregistrement différents dans mysql Développement d'un site Web ou d'une appli mobile 31 Janvier 2006
Compter le nombre de caractère dans une chaine ? oui mais... Développement d'un site Web ou d'une appli mobile 9 Décembre 2005
Comment compter le nombre de / dans l'url ? Développement d'un site Web ou d'une appli mobile 6 Novembre 2005
Comment compter le nombre de pages indexées d'un site ? Référencement Google 4 Octobre 2004
mécanique - machine à compter les champignons Demandes d'avis et de conseils sur vos sites 28 Janvier 2020
RGPD et conséquences des titres émis à compter de 2020 Droit du web (juridique, fiscalité...) 8 Janvier 2020
Compter les clics sur liens sortants avec redirection Google Analytics 9 Mai 2019
Comment compter les lettres d'un texte ? Développement d'un site Web ou d'une appli mobile 27 Août 2016
[lemondedutennis.com] Vos avis compteront tous :) Demandes d'avis et de conseils sur vos sites 13 Décembre 2012
Compter les affichages de bannières sous GA pour avoir le taux de clic Google Analytics 10 Septembre 2012