2013-03-14 5 views
0

У меня есть текстовый файл (in.txt), который имеет текст на нескольких строках. Мне нужно найти переменную строку, и если она найдена, удалите всю строку, но сохраните остальные. Я использовал сценарий ниже, но, похоже, он избавился от всех данных и написал то, что искал. Пожалуйста, может кто-нибудь указать мне в правильном направлении? «ключ» - это строка, для которой я ищу.Поиск и удаление текстового файла php

$key = $_REQUEST['key']; 
$fc=file("in.txt"); 


$f=fopen("in.txt","w"); 


foreach($fc as $line) 
{ 
     if (!strstr($line,$key)) 
     fputs($f,$line); 
} 
fclose($f); 

ответ

2

Простейшим я могу придумать как

<?php 

    $key = 'a'; 
    $filename = 'story.txt'; 
    $lines = file($filename); // reads a file into a array with the lines 
    $output = ''; 

    foreach ($lines as $line) { 
     if (!strstr($line, $key)) { 
      $output .= $line; 
     } 
    } 

    // replace the contents of the file with the output 
    file_put_contents($filename, $output); 
1

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

Вам необходимо создать новый файл. Запись данных в новую. Удалите старый. И переименуйте новый.

OR

Открыть этот файл в режиме read. Скопируйте данные этого файла в переменную. Открыть снова в режиме write. И напишите данные.

+0

Ok спасибо, но не более простой способ? Я не уверен, как делать то, что вы предлагаете. – Martyn

+0

@ пользователь1592162 - см. Обновление. –

+0

Когда я удаляю строку? – Martyn

-1
$key = $_REQUEST['key']; 
$fc=file("in.txt"); 


$f=fopen("in_temp.txt","w"); 

$temp = array(); 
foreach($fc as $line) 
{ 
    if (substr($line,$key) === false) 
     fwrite($f, line); 
} 
fclose($f); 
unlink("in.txt"); 
rename("in_temp.txt", "in.txt"); 
0

Его работа для меня

<?php 
$key = $_REQUEST['key']; 
$contents = ''; 
$fc=file("in.txt"); 
foreach($fc as $line) 
    { 
    if (!strstr($line,$key)) 
    { 
     $contents .= $line; 
    } 
    } 
    file_put_contents('in.txt',$contents); 
?> 
+0

он содержит $ contents как неопределенную переменную. Я не могу разобраться, как я это разбираюсь. Приветствия. – Martyn

+0

@ user1592162 Эй, посмотри мой отредактированный пост, он тебе поможет .. и после запуска этого скрипта проверьте in.txt – alwaysLearn

Смежные вопросы