2010-07-24 203 views
4

我有一个简单的脚本,从表单中抽取一个单词并评估它是否存在于文件(.txt)中。 txt文件在每行上都有一个单词或短语。文件中没有\ t或\ r。in_array返回false时应该返回true

但是,当我提交表单并POST文件中的第一个单词(例如“the”)时,下面的脚本返回false时应该返回true。

我知道这一点,因为当我打印出数组$文件,我在屏幕上得到:

Array 
(
    [0] => the 
... 

因此,有问题的话...

$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>"; 

是否有人可以告诉我在哪里这里我错了,因为file()返回的数组看起来是干净的,并且POSTed单词(“the”)是file()数组中的第一个值。我已经检查过,以确保POST数据实际上也正确提交。

TIA。

+1

是“在文件的单独行上的”该“? 'file()'函数返回一个数组,其中包含与文件中每行对应的元素。 – animuson 2010-07-24 22:29:17

回答

6

当您运行file(),结果数组将包含换行符:

注:所产生的阵列中的每个线将包括行结尾,除非使用FILE_IGNORE_NEW_LINES,所以你仍然需要使用RTRIM ()如果你不想让行结束。

最简单的方法可能是使用FILE_IGNORE_NEW_LINES参数。

+0

感谢你们这两个人......它的工作! – 2010-07-24 22:33:39

3

是否将FILE_IGNORE_NEW_LINES添加到file()的帮助?

$file = file('master.txt', FILE_IGNORE_NEW_LINES); 
相关问题