понедельник, 27 октября 2008 г.

Удаляем лишние строки из файла по ключевой фразе

Сегодня поступил ко мне такой вопрос -

этот скрипт удаляет строки, в которых содержится фраза. та что указана тут -
if (!preg_match ("/ETUFRAZUUVIDEL/i", $str))
а как сделать чтобы он удалял из исходного файла все строки, в которых есть фразы, которые содержатся в текстовом файле, допустим 1.txt ?



$strs = array ();
$fi = fopen ("in.txt", "r");
while (!feof ($fi))
{
$strs [] = trim (fgets ($fi, 4096));
}
fclose ($fi);
$fo = fopen ("out.txt", "w");
foreach ($strs as $str)
{
if (!preg_match ("/ETUFRAZUUVIDEL/i", $str))
{
fputs ($fo, $str . "\n");
}
}
fclose ($fo);


Можно сделать таким вот образом:


// грузим строки в массив
$text = file("1.txt");

$res ="";
// проверяем есть ли фраза в каждой строке массива
for($i=0;$iменьшеcount($text);$i++)
{
global $res;
$ind=strpos($text[$i],"фраза");
// если нет такой вот фразы добавляем к результирующей строке
if($ind==null)
$res="$res.$text[$i];
}

тут $res уже будет без лишних строк и мы можем её использовать как нам будет далее угодно :)

Комментариев нет: