2015-05-05 3 views
-1

У меня есть два разных текстовых файла. Я хотел бы «сравнить» первый текстовый файл со вторым текстовым файлом. И, в конце концов, перечислите слова, которые находятся в первом текстовом файле, но не во втором текстовом файле.Список оставшихся слов из двух текстовых файлов

Если некоторые слова находятся в первом текстовом файле и во втором текстовом файле, они не будут отображать их в качестве результата.

У меня очень простые знания в php, и мне понадобится помощь в создании этого скрипта. Все, что я знаю, теперь я должен использовать, если stripos.

Благодарим за помощь.

+2

Вы что-то пробовали? Покажите свой код! – Rizier123

+1

Как сказал @ Rizier123, что вы пробовали? Переполнение стека - это конкретные вопросы о том, как решить конкретные проблемы программирования; а не для общего решения более крупной задачи. – AlienHoboken

+0

Правильный инструмент для работы? Нужно ли это делать в php? Запрашивать, потому что на * nix это может быть достигнуто с помощью очень короткой комбинации «tr -cs ...» (чтобы сохранить каждое слово в строке), 'sort -u' (для сортировки и uniquify) и' comm -23 '(оставить слова с выхода1, а не на выходе2). – arielf

ответ

2

Это довольно простой подход, это может быть не очень удобно для больших файлов.

$files = array('file1.txt', 'file2.txt'); 
$words = array(); 
foreach ($files as $key => $file) 
{ 
    $text = file_get_contents($file); 
    $words[$key] = explode(' ', str_replace("\n", ' ', $text)); 
    $words[$key] = array_unique($words[$key]); 
} 

$diff_words = array_diff($words[0], $words[1]); 

var_dump($diff_words); 

Есть много вещей, которые могут пойти не так, в зависимости от формата и содержания файлов вы питаетесь, например, знаки препинания окно разрывов строк, капитализации, так что будьте терпеливы, как вы работаете через эти проблемы в соответствии к вашим собственным требованиям.

+0

Это работает, спасибо большое. –

0

Вы можете написать каждую строку файла в массиве для каждого и сравнить их, если файл не слишком велик.

$file1 = file("file1.txt"); 
$file2 = file("file2.txt"); 
var_dump(array_diff($file1, $file2)); 

Работа с массивом которые array_diff возвращается. Нет необходимости использовать array_diff, вы можете пройти через один массив с помощью foreach самостоятельно.