begin process at 2012 05 31 08:57:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Recherche d'un mot dans le désordre.


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Recherche d'un mot dans le désordre.

lundi 23 mai 2011 à 12:27:37 | Recherche d'un mot dans le désordre.

woodish

Bonjour,
Je cherche à créer une page en PHP pour une recherche d'un mot dans un tableau ($mots) à partir quelques lettres dans le désordre posté dans un formulaire.

J'ai pensé à plusieurs solutions comme:
1/utilisé les expressions régulières du type "[abc]": chaîne qui contient un "a", un "b", ou un "c"
2/découper la chaîne ($_POST['lettres_user']) en caractères, placer ces caractères dans un tableau neutre et comparer les 2 tableaux par l'occurence des mots.

3/La 3ème solution me paraît meilleur depuis que j'ai découvert : count_chars

Voilà où j'en suis dans le code :

Code PHP :
<body>

<form action="test.php" method="post">
<input type='text' name='lettres_user' size=10 value='' />
<input type="submit" value="Envoyer" />
</form>

<?php

$mots = array('pirate','voile','bateau','canon'); 

if (isset($_POST['lettres_user']))//si quelque chose est posté
{

$lettres_user = htmlentities ($_POST['lettres_user'], ENT_QUOTES);

     

for($i=0;$i<sizeof($mots);$i++){//pour tout les mots du tableaux

    foreach (count_chars($_POST['lettres_user'], 1) as $a => $val_user){//rechercher occurence des lettres de lettres_user
	 
	foreach (count_chars($mots[$i], 1) as $b => $val_mots){//rechercher occurence des lettres des mots
	  
  	if ( ($val_mots == $val_user) && ( chr($b) == chr($a) ) ){//condition d'égalité des recherches
		 
	echo $mots[$i].'<br />';
}}}}}
?>

</body>



si je poste "v" , ça retourne bien "voile"
si je poste "p" , ça retourne bien "pirate"
si je poste "b" , ça retourne bien "bateau"
si je poste "i" , ça retourne bien "voile" et "pirate"
si je poste "aa" , ça retourne bien "bateau"
mais...
si je poste "oi" , ça retourne "pirate" "voile" "voile" "canon"
si je poste "pitr" , ça retourne "pirate" "pirate" "pirate" "pirate" "voile" "bateau"

là ! je pige pas !???
Visiblement la recherche se fait lettres par lettres d'où la répétion et les mots qui ne sont pas sensés sortir.
mercredi 25 mai 2011 à 01:06:35 | Re : Recherche d'un mot dans le désordre.

woodish

J'ai trouvé une solution ! mais je ne sais pas comment l'écrire.
mon code retourne plusieurs fois une même réponse : normal car il compare lettre par lettre.

pour "bate"

il trouve 3*pirate, 1*voile, 4*bateau et 1*canon

Il suffit d'insérer les réponses dans un tableau $rep=array()
puis de sortir les mots de $rep qui ont autant d'occurence que de caractère dans le mot posté.
et hop !
C'est une solution qui répare un bug mais ça devrait fonctionner.

mon soucis est comment insérer les réponses dans le tableau $rep=array() ??

mercredi 25 mai 2011 à 03:16:22 | Re : Recherche d'un mot dans le désordre.

woodish

je n'arrive pas à insérer les réponses dans le tableau.
Voilà comment je tente l'affaire :

Code PHP :
<body>

<form action="lettrestest.php" method="post">
<input type='text' name='lettres_user' size=10 value='' />
<input type="submit" value="Envoyer" />
</form>

<?php

$mots = array('pirate','voile','bateau','canon','a'); 

$rep = array();

if (isset($_POST['lettres_user'])){//si quelque chose est posté

foreach ($mots as $reponses){//les réponses se trouvent dans $mots

$lettres_user = htmlentities ($_POST['lettres_user'], ENT_QUOTES);

for($i=0;$i<sizeof($mots);$i++){//pour tous les mots du tableaux

    foreach (count_chars($_POST['lettres_user'], 1) as $a => $val_user){//rechercher occurence des lettres de lettres_user
	 
	foreach (count_chars($mots[$i], 1) as $b => $val_mots){//rechercher occurence des lettres des mots
			 
	if ( $val_mots == $val_user ){//même occurence
	
	if ( chr($b) == chr($a) ){//...pour une même lettre
					
	$rep[] = $reponses;

    }}}}}}}
	
for($z=0;$z<sizeof($rep);$z++){//afficher les réponses

echo $rep[$z].'<br>';
}	
	
?>


</body>




Je dois me planter qqpart car ça ne donne plus les mêmes résultats.
pour "bate"
le résultat est desormais 9*chaque mot
là je ne comprends absolument pas ce qu'il me retourne ??


Cette discussion est classée dans : poste, mots, lettres, retourne, pirate


Répondre à ce message

Sujets en rapport avec ce message

melanger les lettres d'un texte [ par sospromo ] Bonjour je cherche un script qui me pertterait de mélanger les lettres d'un texte (plus ou moins long). genre: 1. Prendre chaque chaîne de caractère Pbl 'Scrabble' [ par spoonisback ] Bonjour à tous !!Voila j'ai un petit soucis (vs vs en doutez..)Je cherche à créer un logiciel de 'triche' au sccrable: j'ai mes lettres obtenues au ti Recuperer les 6 dernieres lettres d'un mot [ par lechti62 ] Bonjour, j'ai un mot dont je voudrait ne récuperer que les 6 dernieres lettres. Existe t'il une fonction permettant de le faire ?Ce mot (aléatoire) es Identifier un poste client [ par RodesJoel ] Bonjour,Je viens de creer un site sécurisé avec un acces par code et mot de passe (PHP-MySQL).Le client ne doit se connecter que d'un seul poste.  Les détecteer les mots clé [ par jadu ] bonjour à tous !j'ai bien épluché le forum   , et je n'ai pas du tout vu ce que je recherche !!! c'est la première fois <img src="http://www. projet [ par maoryne ] Bonjour, Je suis actuellement dans une filière informatique(deust iosi) et je dois réaliser un projet qui consiste à créer un site internet. J'ai cho limiter la taille d'un texte [ par joebuz ] Bonjour,pour un moteur de recherche, je cherche à couper le texte environ 5 mots avant et apres le mot recherché.pour rechercher [Regex] Remplacer des mots qui se trouvent entre un tag HTML [ par webdeb ] Salut à tous, Je suis bloqué sur une expression régulière que je n'arrive pas à trouver. Et pourtant je cherche depuis pas mal de temps. J'ai développ Services Windows [ par Ben210426 ] Bonjour!J'aimerais executer une page php qui m'affiche la liste des services windows du poste hôte ou d'un poste distant.Merci pour vos réponses ... Validation d'un formulaire et Javascript [ par locotest ] J'ai un bête formulaire contenant 1 champ "Nom", 1 champ "Prénom", 2 champs de mots de passe ( l'un servant de "confirmation" à l'autre) et un bouton


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales