Практика 1
Задача
На локальном сервере есть папка, в ней файлы (все файлы типичны, кроме: 8, 88.php, index.htm, index.php). Требуется во всех этих файлах (кроме нетипичных) заменить текст "семь " на "7 ".
Внимание! Всегда надо иметь копию папки и права на нее должны быть 777 (доступ на чтение и запись на удаленном сервере; на локальном сервере доступ дается автоматически)!
- Алгоритм примерно такой:
- создать массив файлов в папке;
- удалить из этого списка нетипичные файлы;
- взять 1-й файл из этого массива (создать цикл), открыть его для изменений, заменить текст "Семь " на "7 " (" один " на " 1 "), сохранить этот файл с изменениями, перейти к следующему файлу;
- после последнего файла (завершения цикла) вывести отчет, сколько и какие файлы были изменены.
Решение
На удаленном и локальном серверах система работает по-разному. Поэтому алгоритм должен дублироваться (т.к. разные пути до корня системы). И вот, чтобы уйти от дублирования, вводится переменная, отвечающая за корневой адрес. И в зависимости от того, где будет работать система, будет подставляться данная переменная:
<?$k1=$_SERVER['SERVER_NAME'].$_SERVER['PHP_SELF'];$k2=strlen($k1);if($k2>33){$d='/home/vhosts/'.$w0.'/ph/'.basename(realpath(__DIR__.'/'));}else{$d='/0/domains/podolsk/ph/praktika1/';}?>
создать массив файлов в папке
<?$f=scandir($d);print_r($f)?>
Warning: scandir(/0/domains/podolsk/ph64/): failed to open dir: No such file or directory in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 18
Warning: scandir(): (errno 2): No such file or directory in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 18
удалить из этого списка нетипичные файлы
<?$f=scandir($d);unset($f[array_search('8',$f)]);unset($f[array_search('88.php',$f)]);unset($f[array_search('index.htm',$f)]);unset($f[array_search('index.php',$f)]);$f=array_diff($f,array('.'));$f=array_diff($f,array('..'));print_r(array_values($f))?>
Warning: scandir(/0/domains/podolsk/ph64/): failed to open dir: No such file or directory in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 21
Warning: scandir(): (errno 2): No such file or directory in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 21
Warning: array_search() expects parameter 2 to be array, boolean given in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 21
Warning: array_diff(): Argument #1 is not an array in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 21
Warning: array_values() expects parameter 1 to be array, null given in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 21
взять 1-й файл из этого массива (создать цикл), открыть его для изменений, заменить текст "Семь " на "7 " (" один " на " 1 "), сохранить этот файл с изменениями, перейти к следующему файлу
Warning: scandir(/0/domains/podolsk/ph64/): failed to open dir: No such file or directory in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 23
Warning: scandir(): (errno 2): No such file or directory in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 23
Warning: array_search() expects parameter 2 to be array, boolean given in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 23
Warning: array_diff(): Argument #1 is not an array in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 23
Warning: Invalid argument supplied for foreach() in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 23
после последнего файла (завершения цикла) вывести отчет, сколько и какие файлы были изменены
Файлы меняются все.
<?$f=scandir($d);unset($f[array_search('8',$f)]);unset($f[array_search('88.php',$f)]);unset($f[array_search('index.htm',$f)]);unset($f[array_search('index.php',$f)]);$f=array_diff($f,array('.'));$f=array_diff($f,array('..'));print_r(array_values($f))?>
Warning: scandir(/0/domains/podolsk/ph64/): failed to open dir: No such file or directory in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 34
Warning: scandir(): (errno 2): No such file or directory in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 34
Warning: array_search() expects parameter 2 to be array, boolean given in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 34
Warning: array_diff(): Argument #1 is not an array in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 34
Warning: array_values() expects parameter 1 to be array, null given in /home/vhosts/podolsk.xp3.biz/ph/ph64/index.php on line 34