Удаление строки из файла

Рецепт №66. Из книги «128 рецептов php»
Перейти к оглавлению

При работе с текстовыми файлами, может возникнуть необходимость в удалении строк. Следующий рецепт поможет это реализовать. В примере приведена пользовательская функция, которая принимает два параметра. Первый – путь до файла, а второй – номер строки, которую необходимо удалить.

Пример:

// пример использования функции удаления сроки
$result = delStringByNum('/files/test.txt', 3);
var_dump($result);

/**
* Функция для удаления строки из файла
*
* @param string $fileName - расположение файла
* @param string $num - номер строки, 
* которую нужно удалить
*/
function delStringByNum($fileName, $num){
	// Открываем файл
	$file = @file($fileName);
	// если файл не найден, выводим ошибку
	if(!$file){
		trigger_error("File '$fileName' not found!");
		return false;
	}
	// если номер строки не корректный, сообщим об этом
	if(!isset($file[$num-1])){
		trigger_error("
Incorrect number string: ($num)
");
		return false;
	}
	// удаляем строку
	$num = intval($num)-1;
	unset($file[$num]);
	// открываем файл для записи
	$fileOpen = @fopen($fileName,"w"); 
	// если файл невозможно редактировать, 
// сообщаем об этом
	if(!$file){
		trigger_error("
File '$fileName' is not writable!
");
		return false;
	}
	// перезаписываем файл
	fputs($fileOpen, implode("", $file)); 
	fclose($fileOpen);
	return true;
}

В приведенном примере использовалась, ранее не описываемая, php функция — trigger_error, она позволяет выводить пользовательские ошибки, предупреждения и уведомления. Что очень удобно при написании пользовательских функций, которые в ходе выполнения могут вернуть ошибку, например, при обращении к несуществующему файлу.

Рассказать друзьям:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*