2010-07-24 3 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>"; 

Может кто-то пожалуйста, скажите мне, где Я ошибаюсь здесь, так как массив, возвращаемый файлом(), кажется чистым, а слово POSTed («the») является первым значением в массиве file(). Я проверил, что данные POST на самом деле тоже отправляются правильно.

TIA.

+1

Есть ли «отдельная» строка в файле? Функция 'file()' возвращает массив с элементом, соответствующим каждой строке в файле. – animuson

ответ

6

При запуске file(), результирующий массив будет содержать разрывы строк:

Примечание: Каждая строка в результирующем массиве будет включать в себя линию окончания, если не используется FILE_IGNORE_NEW_LINES, так что вам еще нужно использовать RTRIM(), если вы не хотите, чтобы строка заканчивалась.

Самый простой способ - это, вероятно, использовать параметр FILE_IGNORE_NEW_LINES.

+0

спасибо вам за это ... это сработало! –

3

Добавляет FILE_IGNORE_NEW_LINES в файл() help?

$file = file('master.txt', FILE_IGNORE_NEW_LINES); 
Смежные вопросы