Compter le nombre de mots dans une chaine de caractères
7 messages
• Page 1 sur 1
- Skycer666
- WRInaute discret

- Messages: 59
- Inscription: 5 Mai 2009
Compter le nombre de mots dans une chaine de caractères
Bonjour
J'aimerai compter le nombre de mots d'une chaine de caractères :
Pour faire ça, j'utilise la fonction
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 :
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
J'aimerai compter le nombre de mots d'une chaine de caractères :
Pour faire ça, j'utilise la fonction
- Code: Tout sélectionner
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: Tout sélectionner
$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
- le-bon-plan.com
- WRInaute discret

- Messages: 129
- Inscription: 1 Juin 2007
Re: Compter le nombre de mots dans une chaine de caractères
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.
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.
- Skycer666
- WRInaute discret

- Messages: 59
- Inscription: 5 Mai 2009
Re: Compter le nombre de mots dans une chaine de caractères
- Code: Tout sélectionner
$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 ...
-

anemone-clown - WRInaute passionné

- Messages: 1276
- Inscription: 11 Nov 2007
Re: Compter le nombre de mots dans une chaine de caractères
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...
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...
Dernière édition par anemone-clown le Mar Mai 19, 2009 11:05, édité 1 fois.
- Skycer666
- WRInaute discret

- Messages: 59
- Inscription: 5 Mai 2009
Re: Compter le nombre de mots dans une chaine de caractères
- Code: Tout sélectionner
// -----------------------------------------
// 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..
-

anemone-clown - WRInaute passionné

- Messages: 1276
- Inscription: 11 Nov 2007
Re: Compter le nombre de mots dans une chaine de caractères
Tu as deux résultats à obtenir, non?
Il faut donc travailler sur 2 sous-chaînes...
- Skycer666
- WRInaute discret

- Messages: 59
- Inscription: 5 Mai 2009
Re: Compter le nombre de mots dans une chaine de caractères
- Code: Tout sélectionner
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
7 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Compter le nombre de caractères d'une chaine
- Compter le nombre de caractère dans une chaine ? oui mais...
- Nombre de "-" dans une chaine de caracteres
- PHP Compter les caractères et accents
- Extraire une chaine de caractères
- Couper une chaine de caractères
- fractionner une chaine de caractères
- rewriting avec une variable de chaîne de caractères
- PHP et MagpieRSS, couper une chaine de caractères
- [PHP] : compter le nombre de requêtes MySQL
Consultez la description détaillée des produits ou services de Google suivants : Google Suggest
- Calcul du nombre de backlinks
Cet outil vous permet d'analyser en détails la "popularité" de votre site sur Google. En plus du nombre de liens pris en compte par Google, il calcule le pourcentage de liens internes parmi tous les liens, et il affiche les premières URL trouvées. - Analyseur de densité
Cet outil vous permet de calculer l'indice de densité d'un mot-clé d'une page web. Il est calculé à la fois pour la balise TITLE, la balise META description et l'ensemble du texte de la page.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
