PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 17
tundramani Отправлено: 08 Декабря, 2019 - 18:16:00 • Тема: Как сделать копию папки со всем ее содержимым? • Форум: Вопросы новичков

Ответов: 0
Просмотров: 317
Вот вариант решения задачи:



PHP:
скопировать код в буфер обмена
  1.  
  2. function copy_folder($d1, $d2, $upd = true, $force = true) {
  3.     if ( is_dir( $d1 ) ) {
  4.         $d2 = mkdir_safe( $d2, $force );
  5.         if (!$d2) {fs_log("!!fail $d2"); return;}
  6.         $d = dir( $d1 );
  7.         while ( false !== ( $entry = $d->read() ) ) {
  8.             if ( $entry != '.' && $entry != '..' )
  9.                 copy_folder( "$d1/$entry", "$d2/$entry", $upd, $force );
  10.         }
  11.         $d->close();
  12.     }
  13.     else {
  14.         $ok = copy_safe( $d1, $d2, $upd );
  15.         $ok = ($ok) ? "ok-- " : " -- ";
  16.         fs_log("{$ok}$d1");
  17.     }
  18. } //function copy_folder
  19.  
  20. function mkdir_safe( $dir, $force ) {
  21.     if (file_exists($dir)) {
  22.         if (is_dir($dir)) return $dir;
  23.         else if (!$force) return false;
  24.         unlink($dir);
  25.     }
  26.     return (mkdir($dir, 0777, true)) ? $dir : false;
  27. } //function mkdir_safe
  28.  
  29. function copy_safe ($f1, $f2, $upd) {
  30.     $time1 = filemtime($f1);
  31.     if (file_exists($f2)) {
  32.         $time2 = filemtime($f2);
  33.         if ($time2 >= $time1 && $upd) return false;
  34.     }
  35.     $ok = copy($f1, $f2);
  36.     if ($ok) touch($f2, $time1);
  37.     return $ok;
  38. } //function copy_safe
  39.  
  40. function fs_log($str) {
  41.     $log = fopen("./fs_log.txt", "a");
  42.     $time = date("Y-m-d H:i:s");
  43.     fwrite($log, "$str ($time)\n");
  44.     fclose($log);
  45. }
  46.  
  47.  



Что скажите?
И в коде не понятно где имя исходника и копии: $d1, $d2 - уточните пожалуйста.
tundramani Отправлено: 05 Ноября, 2018 - 17:41:21 • Тема: Как изменить кодировку строки на PHP? • Форум: Вопросы новичков

Ответов: 2
Просмотров: 328
php 5.3.5


Сервер получает строку в таком виде:

Цитата:
Àðòèêóë;Íàèìåíîâàíèå;"Öåíà, ðóá.";Ññûëêà;Èçîáðàæåíèå;Îïèñàíèå;ÐÀÇÌÅÐ;ÖÂÅÒ;ÑÎÑÒÀÂ;"Íàçâàíèå ðàçäåëà";Áðåíä;Ïîë;Ðàçìåð;Ñåçîí;"Ñòðàíà ïðîèçâîäèòåëü";"Âûñîòà êàáëóêà";"Âûñîòà ãîëåíèùà";"Îáõâàò ãîëåíèùà";"Êîììåíòàðèé ê òîâàðàì";"Ðàçìåð íà ìîäåëè";"Ðîñò ìîäåëè"


Декодер Лебедева успешно расшифровывает и говорит:
CP1252 -> CP1251


на сервере такой код:


PHP:
скопировать код в буфер обмена
  1. $x = file_get_contents('php://input');
  2. $dir ='./раздел/';
  3. $str = iconv('cp1252', 'cp1251', $x);
  4. file_put_contents( $dir . '1.txt', $str );

но он создает пустой файл
поправьте пожалуйста

или такой еще вариант не работает:
PHP:
скопировать код в буфер обмена
  1. $str1 = iconv('utf-8', 'cp1252', $x);
  2. $str2 = iconv('cp1251', 'utf-8', $str1);
  3. file_put_contents( $dir . '1.txt', $str2 );



код без конвертации работает:
PHP:
скопировать код в буфер обмена
  1. $x = file_get_contents('php://input');
  2. $dir ='./раздел/';
  3. file_put_contents( $dir . '1.txt', $x );
tundramani Отправлено: 05 Ноября, 2018 - 13:38:10 • Тема: Как на сервере восстановить и сохранить base64-файл? • Форум: Вопросы новичков

Ответов: 1
Просмотров: 229
PHP 5.3.5

Из инпута получаю текстовый файл.
Через FileReader получаю этот файл в виде base64.
Отправляю это на сервер чтобы на нем сохранить этот файл.

Хочу обойтись без использования форм.
Как из исходного файла на клиенте получить base64 и воссоздать этот файл на сервере?

CODE (javascript):
скопировать код в буфер обмена
  1. var x = JSON.stringify([text])
  2. var запрос = new XMLHttpRequest()
  3. запрос.open('POST', '1.php')  
  4. запрос.send(x)
  5.  


PHP:
скопировать код в буфер обмена
  1.  
  2. $x = 'base64'  //полученная строка
  3. $dir ='./раздел/';
  4. $d = base64_decode($x);
  5. file_put_contents($dir . '1.txt', $d);


но в итоге кодировка убивается
как сделать правильно?
tundramani Отправлено: 02 Ноября, 2018 - 17:13:49 • Тема: Как по указанному пути найти по расширению единственный файл и удалить его? • Форум: Вопросы новичков

Ответов: 1
Просмотров: 131
php 5.3.5

php-скрипт получает путь к папке
в которой надо найти html-файл
который там всегда один но имя его не известно
и удалить его

отбой

вот решение

PHP:
скопировать код в буфер обмена
  1. $dir ='/путь/';
  2.  
  3. array_map('unlink', glob($dir . "*.html"));
tundramani Отправлено: 01 Ноября, 2018 - 21:04:41 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
Строитель все работает
спасибо еще раз!
tundramani Отправлено: 01 Ноября, 2018 - 19:43:45 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
так?

но надо не обьект а массив

PHP:
скопировать код в буфер обмена
  1.  
  2. $dir = './документы';
  3. $object = array();
  4.  
  5. foreach (scandir($dir) as $item)
  6.     {
  7.         $temp = $dir . DIRECTORY_SEPARATOR . $item;
  8.  
  9.         if ($item != '.' && $item != '..' && is_dir($temp))
  10.         {
  11.             $object[] = $item;
  12.         }
  13.     }
  14.  


вместо DIRECTORY_SEPARATOR можно поставить: "/" ?
tundramani Отправлено: 01 Ноября, 2018 - 18:09:25 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
Строитель пишет:
tundramani пишет:
надо урезать этот код так чтобы получить только имена папок в папке Документы
А структура json при этом какой должна принять вид?


просто список имен только папок в указанной папке:

[
"имя",
"имя",
"имя"
]

может быть переименовать тему - чтобы еще кому пригодилось

назвать так:

"как сканировать файлы и папки"
tundramani Отправлено: 01 Ноября, 2018 - 17:04:14 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
Спасибо, Строитель!

беру этот код в свое дело
однако не понимаю как он работает - магия
не понимаю как в обьекте образуются пары ключ:значение
но я foreach еще не пользовался и в js - покумекаю..



еще последняя просьба в этой теме:

надо урезать этот код так чтобы получить только имена папок в папке Документы
tundramani Отправлено: 01 Ноября, 2018 - 15:52:12 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
Строитель пишет:
tundramani, ну тогда вооружайтесь терпением и вперёд исправлять ошибки )


попробую обновить MAMP - ваш кот ведь без ошибок уверен ))
(Добавление)
Строитель спасибо!

я нашел ошибку и всё заработало

php 5.3.5 - только это встало на мой старенький мак

и еще просьба:

надо в этом коде добавить обрезку расширения
tundramani Отправлено: 01 Ноября, 2018 - 15:10:15 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
у меня PHP 5.2.1 - может быть поэтому не работает?

исправил на $object = array();

Спойлер (Отобразить)


опять:

PHP Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/сканир овать_документы.php on line 5
tundramani Отправлено: 01 Ноября, 2018 - 14:51:06 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
я посмотрет волшебные константы - но непонял

вообще php для меня слишком сложен и запутан
в js я не испытываю никаких проблем

а если просто так сделать:


(Добавление)
код выдает ошибку:

PHP Parse error: syntax error, unexpected '[' in /Applications/MAMP/htdocs/сканир овать_документы.php on line 3
tundramani Отправлено: 01 Ноября, 2018 - 14:37:51 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
не понимаю что такое __DIR__

и не вижу в коде поиск по расширению
tundramani Отправлено: 01 Ноября, 2018 - 14:17:32 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
CODE (html):
скопировать код в буфер обмена
  1.  
  2. /documents
  3. ..../dir1
  4. ..../dir2
  5. ......../file1.html
  6. ..../dir3
  7.  


в папке documents находятся однотипные папки
названия этих папок это id документов
внутри них есть однотипные данные: файлы и папки - один из которых это сам документ *.html

таким образом мои документы имеют уникальный id (имя папки)
и переменчивое имя единственного html-файла внутри папки документа
все что мне нужно в этой функции - получить все id и имена документов
tundramani Отправлено: 01 Ноября, 2018 - 12:53:10 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
Строитель, прошу вас немного модифицировать ваш код

тз изменилось:

Цитата:
у меня есть одна папка /documents
в ней только папки - каждый документ это папка с данными: файлы и папки
нужно в каждой найти в корне имя единственного html-файла - поиск по расширению .html - других html-файлов нет


json такой:
CODE (htmlphp):
скопировать код в буфер обмена
  1. {
  2. 'имя_папки_докумета' : 'имя_файла',
  3. 'имя_папки_докумета' : 'имя_файла',
  4. 'имя_папки_докумета' : 'имя_файла',
  5. ...
  6. }
tundramani Отправлено: 31 Октября, 2018 - 15:37:38 • Тема: Как сканировать файлы и папки • Форум: Вопросы новичков

Ответов: 23
Просмотров: 1115
Строитель спасибо

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB