2010-07-24 9 views
4

J'ai un script simple qui prend un mot d'un formulaire et évalue s'il existe dans un fichier (.txt). Le fichier txt a un seul mot ou une phrase sur chaque ligne. Il n'y a pas de \ t's ou de \ r dans le fichier.in_array retourne false alors que devrait retourner vrai

Toutefois, lorsque je soumets le formulaire et POST le premier mot dans le fichier (par exemple "le"), le script suivant renvoie false, lorsqu'il doit renvoyer true.

Je sais que cela, parce que quand j'imprimer le tableau $ file, je reçois à l'écran:

Array 
(
    [0] => the 
... 

Donc, il y a quelque chose de mal ...

$word = $_POST['word']); 

// Get a file into an array. 
$file = file('master.txt'); 

if (in_array($word, $file)) { 
    echo "true"; 
} 
else { 
    echo "false"; 
} 

echo "<pre>"; 
print_r($file); 
echo "</pre>"; 

Quelqu'un peut-il s'il vous plaît me dire où Je vais mal ici, puisque le tableau retourné par le fichier() semble être propre, et le mot POSTed ("le") est la première valeur dans le tableau file(). J'ai vérifié que les données du POST sont correctement transmises.

TIA.

+1

Est-ce que "the" figure sur une ligne distincte dans le fichier? La fonction 'file()' retourne un tableau avec un élément correspondant à chaque ligne du fichier. – animuson

Répondre

6

Lorsque vous exécutez file(), le tableau résultant contiendra les sauts de ligne:

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

Le moyen le plus simple est probablement d'utiliser le paramètre FILE_IGNORE_NEW_LINES.

+0

merci à vous deux pour cela ... ça a marché! –

3

Est-ce que ajouter FILE_IGNORE_NEW_LINES à l'aide de fichier()?

$file = file('master.txt', FILE_IGNORE_NEW_LINES); 
Questions connexes