Скрипт, който търси във файл дадена дума и я изтрива!

m3

Registered
Здравейте!
Трябва ми скрипт който търси определн текст във файл и го заменя с друг или го изтрива. Примерно имам следните записи в db.inc

Код:
Ivan
Petar
Dimitar
Stefan
Kolio

Скрипта да намери Dimitar и да го изтрие или замени с друг текст.

Мерси предварително!
 
<?php
$file="db.inc";//Име на файла
$replace='Тук името с което ще го замениш';
$filesize=filesize($file);
$fp = fopen ($file ,"r");
$text=fread($fp,$filesize);
fclose($fp);
$text=str_replace("Dimitar",$replace,$text);
$fp = fopen ($file ,"w");
fwrite($fp, $text );
fclose($fp);
?>
Ако искаш да го изтрие просто остави празно така:
Код:
$replace='';
 
Този скрипт може да е интересен и за други хора, затова бих написал малко по-мощен скрипт, който да преценя дали името наистина е за триене. В моя скрипт в такива случаи аз задължително ще използвам регулярни изрази.
Да приемем, че имаме файл TxtFile.txt със следното съдържание:
Код:
Dimitar rtewqr
Ivan
Petar
Dimitar
Stefan
Kolio
Dimitar rr
И от този файл искаме да изтрием само реда, който започва с думата Dimitar, а не да заменяме тази дума навсякъде, където се среща. Тогава кода ще изглежда горе-долу така:
Код:
<?php
$file = "TxtFile.txt";
$fh = fopen('newFile.txt', 'w') or die("ne moga da otworia file");

$data = file($file);

foreach ($data as $line) {
	$line = preg_replace('/^Dimitar$/', "", rtrim($line));	
	if ($line) fwrite($fh, $line . "\n");
}
fclose($fh);
?>
Така ще запазим съществуващия файл, но ще създадем един файл без празни редове в който е махнат само реда Dimitar и файла се казва newFile.txt.
Даноп съм внесъл малко яснота в "безразборното" триене на дума или израз.
 
Много лесно:
Код:
<?php
$file = "TxtFile.txt";
$fh = fopen('newFile.txt', 'w') or die("ne moga da otworia file");

$data = file($file);

foreach ($data as $line) {
   $line = preg_replace('/^.*Dimitar.*$/', "", rtrim($line));   
   if ($line) fwrite($fh, $line . "\n");
}
fclose($fh);
?>
 

Back
Горе