web-dev
О ужас!!!
megapiz
Давай попробуем по порядку.
1. Сверять целые строки? Значит нужен массив строк.
Это умеет file()
Одно "но": если файл создан на виндовом хостенге, в бинарном режиме закинут на юникс-машину, и открыт на ней при помощи file() - виндовые \r\n на никсе будут интерпретированы как 2 перевода строки, а значит массив будет удвоенного размера и будет содержать половину пустых строк.
Поэтому я предпочитаю конструкцию:
PHP |
$stroki = explode(PHP_EOL,trim(file_get_contents("file.txt"))); |
2. Удалить совпадающие строки (или содержащие в себе поисковую подстроку) и посчитать число удаленных строк проще в цикле:
PHP |
// Запускаем счетчик $searched = 0; // Цикл по строкам for($i=0;$i<count($stroki);$i++) { //Поиск полного соответствия искомой строки целой строке в файле if($search_strig == $stroki[$i]) // Далее закомментированный вариант для поиска вхождений искомой строки: // if( stristr($stroki[$i],$search_strig) ) { // Удаляем строку из массива: unset($stroki[$i]); // Считаем: $searched++; } } |
3. Остается собрать обновленный файл из массива, перезаписать, и вывести на экран отчет:
PHP |
$fh = fopen("file.txt", "w"); fwrite($fh, implode(PHP_EOL,$stroki)); fclose($fh); echo "Найдено и удалено ".$searched." строк, содержащих поисковый запрос"; |