красивый|быстрый|смелый
хорошой|пестрый|длинный
бледный|красныцй|ярый|беглый
смелый|настоящий|кран
бледный|красныцй|ярый|беглый
румяный|пестрый|яростный
Нужно сравнивать слова из каждой строчки со всем файлом и в случае нахождения слова в другой строке, добавить эту строку(строки) к текущей проверяемой. Далее сохранить эту строку в новый файл.
Т.е. как мы видим, некоторые слова могут встречаться в других строках. Например, вот 2 строки:
красивый|быстрый|смелый
смелый|настоящий|кран
Здесь, как мы видим, встречается одинаковое слово "смелый".
Скрипт должен соединить эти строки так: "красивый|быстрый|смелый|смелый|настоящий|кран" и записать в новый файл.
Слова в новом файле в разных строках повторяться не должны.
Т.е. релузьтатом работы скрипта в данном случае был бы файл с таким содержанием:
красивый|быстрый|смелый|смелый|настоящий|кран
хорошой|пестрый|длинный|румяный|пестрый|яростный
бледный|красныцй|ярый|беглый
грустный|веселый|большой
Пробовал и так и сяк. Не доходит, как это реализовать.
Остановился на таком варианте, но он тоже неверно работает:
<?php
set_time_limit(0);
$file = file("1.txt"); // Открываем первый файл и заносим из него все строки в массив
$file3 = "3.txt";
$proverka = file_get_contents("3.txt");
//Запись в файл
function add_to_file($string)
{
global $file3;
$res = fopen($file3,'a');
$try = fwrite($res, $string);
if (!$try) {echo 'Ошибка! Не могу записать в файл: '.$file3."\n";}
}
$line_pattern = "";
foreach ($file as $line)
{
$line = trim($line);
$pattern = "/" . $line . "/i";
//Проверяем, есть ли в файле результата вхождение одного из слова
if(!preg_match($pattern, $proverka)) {
for($i = 1; $i < count($file); $i++)
{
if(preg_match($pattern, $file[$i])) {
$arr_vibor = array_slice($file, $i, 1);
$line .= "|" . $arr_vibor[0];
}
}
add_to_file($line);
}
}
?>
Буду очень благодарен за помощь!