Примеры решения задач

Задача

Задача. Создайте файл 'www.txt' и запишите в него фразу 'Я учу PHP!'.

Решение:

<?php
	file_put_contents('www.txt', 'Я учу PHP!');
?>

Задача

Задача. Считайте данные из файла 'www.txt' и выведите их на экран.

Решение:

<?php
	echo file_get_contents('www.txt');
?>

Задачи для решения

Работа с файлами

Создайте файл 'test.txt' и запишите в него фразу 'Привет, мир!'.

Решение:

<?php
	file_put_contents('test.txt', 'Привет, мир!');
?>

Считайте данные из файла 'test.txt' и выведите их на экран.

Решение:

<?php
	echo file_get_contents('test.txt');
?>

Переименуйте файл 'test.txt' в 'mir.txt'.

Решение:

<?php
	echo rename('test.txt', 'mir.text');
?>

Сделайте папку 'folder'. 'test.txt' в 'mir.txt'.

Решение:

<?php
	echo rename('test.txt', 'mir.text');
?>

Создайте копию файла 'mir.txt' и назовите ее 'world.txt'.

Решение:

<?php
	copy(mir.txt, world.txt);
?>

Определите размер файла 'world.txt'. Выведите его на экран. Выведите его в байтах, мегабайтах, гигабайтах.

Решение:

<?php
	echo filesize('world.txt'); //байт
	echo filesize('world.txt')/1024/1024; //мегабайт
	echo filesize('world.txt')/1024/1024/1024; //гигабайт
?>

Удалите файл 'world.txt'.

Решение:

<?php
	unlink('world.txt');
?>

Проверьте существование файлов 'world.txt' и 'mir.txt'.

Решение:

<?php
	if (file_exists('world.txt')) {
		echo "Файл существует";
	} else {
		echo "Файл не существует";
	}
?>

Работа с папками, mkdir, rmdir

Создайте папку 'test'.

Решение:

<?php
	mkdir('test');
?>

Переименуйте папку 'test' на 'www'.

Решение:

<?php
	rename('www');
?>

Удалите папку 'www'.

Решение:

<?php
	rmdir('test','www');
?>

Дан массив со строками. Создайте в папке 'test' папки, названиями которых служат элементы этого массива.

Решение:

<?php
	mkdir('test');
	$arr = ['qqq','eee','ddd'];
	foreach($arr as $elem) {
		mkdir('test/'.$elem);
	}
?>

На scandir, is_dir, is_file, PHP_EOL

Выведите на экран название всех файлов и подпапок из папки 'test'.

Решение:

<?php
	var_dump(scandir('test'));
?>

Выведите на экран название всех файлов, но не подпапок из папки 'test'.

Решение:

<?php
	$arr = [];
	$dir = scandir('test');
	foreach($dir as $elem) {
		if(is_file('test/'.$elem)) $arr []= $elem;
	}
	var_dump($arr);
?>

В папке 'test' есть файлы и подпапки. Выведите на экран содержимое всех файлов, которые лежат непосредственно в папке 'test'.

Решение:

<?php
	$arr = [];
	$dir = scandir('test');
	foreach($dir as $elem) {
		if(is_file('test/'.$elem)) $arr []= $elem;
	}
	var_dump($arr);
?>

Выведите на экран название всех файлов с расширением txt из папки 'test'.

Решение:

<?php
	$arr = [];
	$dir = scandir('test');
	foreach($dir as $elem) {
		if(is_file('test/'.$elem) and preg_match('#.txt$#',$elem)) $arr []= $elem;
	}
	var_dump($arr);
?>

Найдите все файлы из папки 'test' и вставьте в начало каждого файла полный путь к нему (текст файла должен остаться в нем и начинаться с новой строки после пути).

Решение:

<?php
	$arr = [];
	$dir = scandir('test');
	foreach($dir as $elem) {
		if(is_file('test/'.$elem) and preg_match('#.txt$#',$elem)) {
			$text_file = file_get_contents('test/'.$elem);
			file_put_contents('test/'.$elem, 'tesst/'.$elem.PHP_EOL.$text_file);
		}
	}
?>

Выведите на экран имена всех папок из папки 'test' и их подпапок (может быть любой уровень вложенности).

Решение:

<?php
	$arr = [];
	function show_dir($dir_name)
	{
		$dir = scandir($dir_name);
		unset( $dir[0], $dir[1] );
			foreach($dir as $elem) {
				$str = $dir_name;
				if(is_dir($dir_name.'/'.$elem)) {
					$str .= '/'.$elem;
					$arr [$elem]= show_dir($str);
				}
			}
		return $arr;
	}
	var_dump(show_dir('test'));
?>

Выведите на экран содержимое всех файлов из папки 'test' и ее подпапок (может быть любой уровень вложенности).

Решение:

<?php
	$arr = [];
	function show_dir($dir_name)
	{
		$dir = scandir($dir_name);
		unset($dir[0], $dir[1]);
			foreach($dir as $elem) {
				$str = $dir_name;
				if(is_file($dir_name.'/'.$elem)) {
					$arr [$elem]= file_get_contents($dir_name.'/'.$elem);
				}
				if(is_dir($dir_name.'/'.$elem)) {
					$str .= '/'.$elem;
					$arr [$elem]= show_dir($str);
				}
			}
		return $arr;
	}
	var_dump(show_dir('test'));
?>

Найдите все файлы из папки 'test' и ее подпапок любого уровня вложенности и вставьте в начало каждого файла полный путь к нему (текст файла должен остаться в нем и начинаться с новой строки после пути).

Решение:

<?php
	$arr = [];
	function show_dir($dir_name)
	{
		$dir = scandir($dir_name);
		unset($dir[0], $dir[1]);
			foreach($dir as $elem) {
				$str = $dir_name;
				if(is_file($dir_name.'/'.$elem)) {
					$text_file = file_get_contents($dir_name.'/'.$elem);
					file_put_contents($dir_name.'/'.$elem, 'tesst/'.$elem.PHP_EOL.$text_file);
					$arr [$elem]= file_get_contents($dir_name.'/'.$elem);
				}
				if(is_dir($dir_name.'/'.$elem)) {
					$str .= '/'.$elem;
					$arr [$elem]= show_dir($str);
				}
			}
		return $arr;
	}
	var_dump(show_dir('test'));
?>

Задачи

Найдите все файлы из папки 'test', в их содержимом найдите тег <h1>текст</h1>. Переименуйте все файлы на их h1.

Решение:

<?php
	$dir = scandir('test');
	foreach($dir as $elem) {
		if(is_file('test/'.$elem)) {
			preg_match_all('#\<h1\>(.+)\</h1\>#', file_get_contents('test/'.$elem), $arr);
			rename('test/'.$elem, 'test/'.$arr[1][0].'.txt');
		}
	}
?>

Удалите из папки 'test' все файлы размером более 1мб.

Решение:

<?php
	$dir = scandir('test');
	foreach($dir as $elem) {
		if(is_file('test/'.$elem) and filesize('test/'.$elem)/1024/1024 > 1) {
			unlink('test/'.$elem);
		}
	}
?>

Имеется папка с файлами, узнайте размер этой папки.

Решение:

<?php
	$dir = scandir('test');
	$sum = 0;
	foreach($dir as $elem) {
		if(is_file('test/'.$elem)) {
			$sum += round(filesize('test/'.$elem)/1024/1024);
		}
	}
	echo $sum.' мб';
?>

Имеется папка с подпапками, узнайте размеры всех подпапок папки и выведите их на экран.

Решение:

<?php
	$sum = 0;
	$arr = [];
	function show_dir($dir_name)
	{
		$dir = scandir($dir_name);
		unset($dir[0], $dir[1]);
			foreach($dir as $elem) {
				$str = $dir_name;
				if(is_file($dir_name.'/'.$elem)) {
					$sum += round(filesize($dir_name.'/'.$elem)/1024/1024);
				}
				if(is_dir($dir_name.'/'.$elem)) {
					$str .= '/'.$elem;
					$arr [$elem]= show_dir($str);
				}
			}
		return $sum;
	}
	echo show_dir('test');
?>