recherche caracteres tableau array

smiley
Invité n'ayant pas de compte PHPfrance

01 sept. 2010, 14:54

Bonjour, je ne sais pas comment faire pour trouver le caractère dans mon tableau ,
ça fonctionne normalement quand j'utilise un "array" prérempli , mais ca ne fait rien quand je le rempli avec un fichier texte ! La variable $texte est un imput type .

Code : Tout sélectionner

$caract_fr = array (); $handle = fopen('liste_francais.txt','r'); if($handle) { while (!feof($handle)) { $ligne = fgets($handle,4096); $caract_fr[] = $ligne; } fclose($handle); } //recherche tableau fr if(in_array($texte,$caract_fr)) { echo '<br>Trouvé',$texte; }
Question : Comment faire pour trouver le mot que je saisi et voir si il se trouve dans le tableau rempli par le fichier texte?
Merci d'avance parce que je galère ! :cry:

smiley
Invité n'ayant pas de compte PHPfrance

01 sept. 2010, 17:23

personne ne sait?

ViPHP
ViPHP | 1996 Messages

01 sept. 2010, 17:32

Utilise les expressions régulières et les fonctions associées de type preg (preg_match, preg_replace,...)
Exemple si tu recherche le mot "joujou" dans la variable $phrase tu mets :
if (preg_match('#joujou#',$phrase)
{
  echo 'trouvé';
}
else
{
  echo 'pas trouvé';
}
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 5462 Messages

01 sept. 2010, 17:57

pour lire un fichier utilise file ou file_get_contents ça sera plus simple deja

smiley
Invité n'ayant pas de compte PHPfrance

01 sept. 2010, 20:14

Le problème c'est que j'ai ça en utilisant preg_match et ça commence à me perturber :?

Code : Tout sélectionner

Warning: preg_match() expects parameter 2 to be string, array given in C:\wamp\www\php\test2.php on line 48
Ps : le premier parametre est aussi une variable

Code : Tout sélectionner

if(preg_match($texte,$caract_fr))

smiley
Invité n'ayant pas de compte PHPfrance

01 sept. 2010, 20:50

Code : Tout sélectionner

$caract_fr = array ('probabilite','quota'','test'); //recherche tableau fr if(in_array($texte,$caract_fr)) { echo '<br>Trouvé',$texte;
comment tu ferais avec un fichier a charger pour obtenir la même chose ?

$caract_fr = explode("\n",file_get_contents("liste_francais.txt"));

et ensuite? :| :^o :^o

ça marche bien avec un array normal alors pourquoi pas avec fichier ! ! ! !

smiley
Invité n'ayant pas de compte PHPfrance

01 sept. 2010, 21:22

Je vais essayer de faire autrement ou du moins d'y réfléchir , je crois avoir trouvé :P

ViPHP
ViPHP | 5462 Messages

02 sept. 2010, 09:19

Code : Tout sélectionner

$caract_fr = array ('probabilite','quota'','test'); //recherche tableau fr if(in_array($texte,$caract_fr)) { echo '<br>Trouvé',$texte;
comment tu ferais avec un fichier a charger pour obtenir la même chose ?

$caract_fr = explode("\n",file_get_contents("liste_francais.txt"));

et ensuite? :| :^o :^o

ça c'est la fonction file sa te fais direct un array, mais tu cherches a faire quoi exactement ?

ça marche bien avec un array normal alors pourquoi pas avec fichier ! ! ! !

smiley
Invité n'ayant pas de compte PHPfrance

03 sept. 2010, 13:31

Bah c'est un peu tordu peut être ce que j'essaye de faire , je voudrais traduire un fichier texte a partir d'un autre fichier texte :roll:

Smiley
Invité n'ayant pas de compte PHPfrance

03 sept. 2010, 13:41

Re et merci pour votre aide !

Bon là j'ai carréement une page blanche quand je fais ça et le pire c'est que je sais pas pourquoi? #-o

Code : Tout sélectionner

$tableau = file("liste_francais.txt"); if(is_array($tableau)) { if(in_array($texte,$tableau)) { echo '<br>Trouvé',$texte; //recherche de la cle fr du mot test $cle_fr = array_search($texte,$tableau); echo "La valeur $texte du tableau fr est la cle $cle_fr<br>"; } }

Pourtant c'est la même chose apparemment quand je met afficher le tableau avec un echo ça me met un Array !
pourtant avec un beeau print_r($tableau) je vois bien le contenu du fichier dans le tableau !?

Mammouth du PHP | 672 Messages

03 sept. 2010, 13:54

Penses à utiliser des echo et des var_dump, ça aide au déboguage...
$tableau = file("liste_francais.txt");
var_dump($tableau);
echo '1';
if(is_array($tableau)) {
	echo '2'; 
	if(in_array($texte,$tableau)) {
		echo '<br>Trouvé',$texte;

		//recherche de la cle fr du mot test

		$cle_fr = array_search($texte,$tableau);

		echo "La valeur $texte du tableau fr est la cle $cle_fr<br>";
	}
	else echo 'pas in_array'; 
}
else echo 'pas is_array';
Profites-en pour réviser les fonctions que tu utilises.
Tu remarqueras dans le manuel un truc sympa sur file()
Retourne le fichier dans un tableau. Chaque élément du tableau correspond à une ligne du fichier, et les retours-chariot sont placés en fin de ligne. Si une erreur survient, file() retournera FALSE.

Note: Chaque ligne du tableau résultant inclura la fin de ligne, à moins que FILE_IGNORE_NEW_LINES ne soit utilisé, donc, vous avez toujours besoin d'utiliser la fonction rtrim() si vous ne voulez pas de fin de lignes.

Note: Si vous avez des problèmes avec PHP qui ne reconnaît pas certaines lignes lors de la lecture de fichiers qui ont été créés ou lus sur un MacIntosh, vous pouvez activer l'option de configuration auto_detect_line_endings.

Smiley
Invité n'ayant pas de compte PHPfrance

03 sept. 2010, 14:23

Code : Tout sélectionner

$tableau = file('liste_francais.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); var_dump($tableau); if(is_array($tableau)) { echo'2'; if(in_array($texte,$tableau)) { echo '<br>Trouvé',$texte; //recherche de la cle fr du mot test $cle_fr = array_search($texte,$tableau); echo "La valeur $texte du tableau fr est la cle $cle_fr<br>"; } else echo 'pas in_array'; }
Pas compris
Je n'obtiens toujours pas ce que je cherche

j'ai bien le tableau grâce a var_dump et 1 2 pas in array !
pourtant le mot est bien dans l'array ?

smiley
Invité n'ayant pas de compte PHPfrance

03 sept. 2010, 14:37

Peut être un truc avec rtrim , espace_blancs?
je cherche !

smiley
Invité n'ayant pas de compte PHPfrance

03 sept. 2010, 14:53

j'ai trouvé merci macgawel ! =D>

Invité
Invité n'ayant pas de compte PHPfrance

03 sept. 2010, 18:42

J'ai modifié un truc et ça fonctionne plus si quelqu'un peut me dire pourquoi il retrouve pas ce mot !

Code : Tout sélectionner

<?php //affich dans textarea if(isset($_POST['texte'])) { $texte = $_POST['texte']; if(isset($_POST['submit'])) { switch($_POST['submit']) { case 'anglais': $anglais = $_POST['submit']; //tableau mots fr $tableau = file("liste_francais.txt"); $chaine = implode('*',$tableau); rtrim($chaine); $tab = explode (',',$chaine); if(is_array($tab)) { echo '2'; if(in_array($texte,$tab)) { echo '<br>Trouvé',$texte; //recherche de la cle fr du mot test $cle_fr = array_search($texte,$tab); echo "La valeur $texte du tableau fr est la cle $cle_fr<br>"; } else echo 'pas in_array'; } else echo 'pas is_array'; break; } } }
Merci parce que ça fait 3 heures que je cherche et ça me gonfle ! Pourquoi il m'affiche pas in array ! grrrrr :evil: