2015-09-15 3 views
0

Как удалить все строки в txt-файле, который содержит несколько слов?Удалить строку, содержащую некоторые слова

Я пытаюсь сделать это с помощью этого сценария:

$f = "somefile.txt"; 
$str=file_get_contents($f); 
$oldMessage=$_POST['label']; 
$deletedFormat=' '; 
$str=str_replace("$oldMessage", "$deletedFormat",$str); 
file_put_contents($f, $str); 

Но мой сценарий удаляет только одно слово не вся строка. Идеи?

+1

Ответ уже здесь: http://stackoverflow.com/questions/2352153/search-for-phrase-word-in-text-files-with -php –

+3

Что вы подразумеваете под 'string'? Одно слово - это строка, целая строка - строка, весь файл - строка. –

+0

Что вы пытаетесь достичь? Вы хотите просто удалить весь '$ oldMessage', если есть определенное слово или? Это помогло бы, если бы мы могли видеть содержимое '$ oldMessage', вероятно. – SidOfc

ответ

1

Это мое решение:

$f = "somefile.txt"; 
$file = fopen ($f, 'r'); 
$oldMessage=$_POST['label']; 
$deletedFormat=' '; 
while(!feof($file)){ 
    $line = fgets($file); 
    if (strpos($line , $oldMessage)) $arr[] = $line; 
} 
$str=file_get_contents($f); 
foreach($arr as $needle){ 
    $str=str_replace($needle, $deletedFormat,$str); 
} 
file_put_contents($f, $str); 
+0

Но как удалить всю строку, где я нашел переменную $ oldMessage? – Darkwind

+0

@ Darkwind Я обновил свой ответ. Он корректно работает в моем тестовом txt-файле. –

+0

Спасибо! Он отлично работает! – Darkwind

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