Condition OR double variable ?

Résolu
Sizzlarr Messages postés 2 Date d'inscription samedi 2 décembre 2000 Statut Membre Dernière intervention 29 décembre 2009 - 28 déc. 2009 à 21:57
Sizzlarr Messages postés 2 Date d'inscription samedi 2 décembre 2000 Statut Membre Dernière intervention 29 décembre 2009 - 29 déc. 2009 à 10:34
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

Sizzlarr Messages postés 2 Date d'inscription samedi 2 décembre 2000 Statut Membre Dernière intervention 29 décembre 2009
29 déc. 2009 à 10:34
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.
3
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
29 déc. 2009 à 09:31
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
0