Extraires les mots dans une chaine de caractere

Soyez le premier à donner votre avis sur cette source.

Vue 7 927 fois - Téléchargée 243 fois

Description

bonjour les ami(e)s!!!
Un petit script simple (et commenté!) qui permet de recuperer les differents "mots" d'une chaine de carctere (mots=suite de lettre entre deux espces ou a la fin du fichierlol)
Sur la page vous rentrer une chaine ds une zone text d'un form, vous le soumisser, puis on recupere chaque mot on les stockes dans un tableau puis affichage du tableau...
Voila bien sur il y a moyen de recuperer la chaine ou d exploiter le tableau autrement qu un simple affichage!

Source / Exemple :


function getWord($str){
	//fonction qui retourne un tableau dont chaqye cellule contient les mots de la chaine $str
		$posFirstLetter=0;//position de la premiere lettre du monde couraznt (au depart 0 bien entendu debut de la chaine)
		$nbMot=0;//Nombre de mots trouver dans la chaine (au depart il n'y a aucun mot trouver)
		for($i=0;$i<=strlen($str);$i++){//on parcours la chaine(volontairement une lettre apres le dernier carctere pour gerer le dernier mot dans la boucle)
			if(substr($str,$i,1)==" " ||substr($str,$i,1)=="&nbsp;" || substr($str,$i,1)==""){//on arrive a la fin d'un mot(esp) ou la fin de la chaine
				$len=$i-$posFirstLetter;//longueur du mot trouver
				$wordArray[$nbMot++]=substr($str,$posFirstLetter,$len);//on stocke le mot trouver dans le tableau de mot et on réinitialise le nb de mot
				$posFirstLetter=$i+1;//Reinitialisation de la position de la premiere lettre du nouveau mot
			}//fin if (bien sur si ce n'est pas la fin d un mot on passe au caractere suivant
		}//fin de boucle
		return $wordArray;
	}

Conclusion :


c tellmt simpliste comme truc qu aucune MAJ ne seras necessaires et y a pas assez lignes pr avoir un bug!!!!
Au mieux y a peut etre moyen de l optimiser un peu....

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Voici un exemple très rapide fait avec la fonction split :

<?php
$texte="Essai de texte avec des espaces insécables et d'autres non.";
$tab=split("( | )",$texte);

$nb=count($tab);

echo '

';

$r=0;

while($r<$nb)
{
echo $tab[$r];
$r+=1;
}
?>

En espérant que ça puisse t'aider.

Bye
cs_nezdeboeuf62
Messages postés
43
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
23 décembre 2006
-
Anthomicro: pkoi pas explode ou split??? Tout simplement car je ne connaissais pas ces fonctions!!!! Je me doutais que ca existait deja mais comme j avais pas le courage de chercher, j'ai preferé le faire directement j ai perdu moins de tps lol...(en plus le test renvoi vrai pr les esp "normaux" et les insecables...).

Au niveau des differents separateurs, j'y ai pensé mais j'ai fait ça car j en avais besoins sur un site...et j'ai fait ce dont j avais besoin seuleument (je sais un peu feignant ms bon..on se refait pas!!! lol).
Cela dit si vous voulez le faire y a no pb!!! je n'y vois aucun inconvenient à ce qu on touche au bout de code que je px poster.... apres tout plus on est de fous...moins y a de riz lol


slt les amis!!!!
cs_GRenard
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Pour etre encore plus cool avec cette fonction (tu changes de noms bien sur)
mais tu rajoutes les délimiteurs à la suite lorsque tu call ta fonction (tu fais un multi-arguments).
Ainsi, tu peux le faire pour n'importe quoi (pas besoin que ca soit juste des espaces !)
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Pourquoi ne pas avoir utilisé la fonction explode, ou split (l'avantage de split est que via une expression régulière tu peux gérer les espaces "normaux" (si j'ose dire) et les espaces insécables ( ).

En plus ça sera largement plus rapide que cette fonction. Cependant c'est pas mal ;-)

Je te mets un 8/10

Bye
cs_GRenard
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Pour une meilleur programmation, avant ton for(), tu dois déclarer ton $wordArray de la sorte :
$wordArray = array();

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_nezdeboeuf62)