2010-07-24 199 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); 
相關問題