Condition OR double variable ? [Résolu]

Signaler
Messages postés
2
Date d'inscription
samedi 2 décembre 2000
Statut
Membre
Dernière intervention
29 décembre 2009
-
Messages postés
2
Date d'inscription
samedi 2 décembre 2000
Statut
Membre
Dernière intervention
29 décembre 2009
-
Bonjour,

Je ne sais pas trop si je poste dans la bonne partie ou non.

Je vais commencer par décrire ce que je souhaite faire avant d'exposer mon problème.

Alors en gros je veux faire un petit programme qui me dit quel prénom on peut écrire avec les lettres autoriser.

exemple avec les lettres "A R N U D M" on peut écrire par exemple Armand, Arnaud, Amanda etc.

Pour l'instant mon code ressemble à ca ( je ne me suis pas pris la tête à faire un truc optimiser pour l'instant, ca fait longtemps que j'ai pas coder en plus :( )


$fp = fopen("bdd_prenom.txt","r"); //lecture du fichier
while (!feof($fp)) 
{ //on parcourt toutes les lignes

  $prenom = trim(fgets($fp, 4096)); // lecture du contenu de la ligne
  $i=0;
  
  $affiche=true;
  
  for($i=0; $i < strlen($prenom); $i++)
  {
  	
  	if ( 	(strtoupper($prenom[$i]) == "A") OR
 			(strtoupper($prenom[$i]) == "R") OR
  			(strtoupper($prenom[$i]) == "N") OR
  			(strtoupper($prenom[$i]) == "U") OR
  			(strtoupper($prenom[$i]) == "D") OR
  			(strtoupper($prenom[$i]) == "M") )
  	{

  	}
  	else 
  	{
 		$affiche=false;
  	}
  }
  if ( $affiche == true ) 
  { 
  	echo $prenom . "
"; 
  }
    
}


Donc je dispose ici d'une liste de prénom que je parcours ligne par ligne, je compare chaque lettre du prénom de la ligne aux lettres autoriser, si une des lettre n'est pas comprise dans celles autoriser je n'affiche pas le prénom.

Mon problème est que les comparaisons sont écrites en dur, comment faire si je souhaite en avoir d'autres sans changer le code à chaque fois ? ( je bug complètement la :/ )

déso pour toutes les fautes d'orthographe :(

Merci d'avance.

2 réponses

Messages postés
2
Date d'inscription
samedi 2 décembre 2000
Statut
Membre
Dernière intervention
29 décembre 2009

et non c est pas forcement un anagramme que je veux, de toute façon j'ai refait mon algo sur papier au calme et j'ai fini par trouver la solution.

<?php
include'haut.php';
?>
<!-- start page -->


<!-- start content -->




Generateur de Prenom




<FORM method=post action="prenom.php">
Lettres :,
,

----

,


</FORM>	

<?php

$lettres=strtoupper(trim($_POST['lettres']));

echo $lettres ."
";


$fp = fopen("bdd_prenom.txt","r"); //lecture du fichier
while (!feof($fp)) 
{ //on parcourt toutes les lignes

  $prenom = trim(fgets($fp, 4096)); // lecture du contenu de la ligne
  $i=0;
  
  $affiche=true;
  
  for($i=0; $i < strlen($prenom); $i++)
  {
  	$j=0;
  	$present=false;
  	for ($j=0; $j < strlen($lettres); $j++ )
  	{	
  		if ( strtoupper($prenom[$i]) == $lettres[$j] )
  		{
  			$present=true;
  		}
  	}
  	if ( $present == true)
  	{
  		
  	}
  	else 
  	{
  		$affiche=false;
  	}
  }
  if ( $affiche == true ) 
  { 
  	echo $prenom . "
"; 
  }
   
}
?>				








<!-- end content -->
<?php
include 'droite.php';
include 'bas.php';
?>





merci quand même.
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Hello,
Pour optimiser, faut que t'ai un fichier de mots divisé suivant la longueur de tes mots.

La fonction array_intersect combinée à ce code :
http://www.phpcs.com/codes/TROUVER-TOUS-ANAGRAMMES-MOT_39876.aspx
Te permettras d'obtenir ce que tu veux...

Pour tes recherches, un telle programme s'appel un anagrammeur.
_________________________________
Min iPomme