| |
автор: staz (15.10.2006 в 16:27) |
|
| | Попробовал скрипт, все работает нормально, вот только одна проблема.
Имена файлов, содержащие пробела, не воспринимает корректно: просто выводит часть до пробела, все, что после, вырезается.
А также, если папка содержит пробел, скрипт вообще её не показывает и выводит:
Warning: Invalid argument supplied for foreach() in D:\ftp.php on line 98
|
line 98:
foreach($file_list as $file)
|
Кто может подсказать, как исправить проблему с файлами и папками?
Я так понимаю, нужно изменить регулярку:
preg_split("/[\s]+/", $file);
|
Но как её изменить, чтобы пробелы не резались? =\
Заранее спасибо за ответы.
p.s. проблемная папка не пустая, проблема именно в пробеле в названии. | |
| |
|
|
| |
автор: Staz (15.10.2006 в 16:31) |
|
| |
для: staz
(15.10.2006 в 16:27)
| | | А также хотелось бы попросить пример простого занесения результат индексации в mysql, в таблицу, содержащую столбцы: path, file, extension(как определить расширение? рабивать название файла по точке?), size, date | |
| |
|
|
| |
|
|
| |
для: staz
(15.10.2006 в 16:27)
| | | А что это за регулярное выражение, где именно оно применяется?
что-то не пойму, где бы его там применить ...
>> как определить расширение? рабивать название файла по точке?
Ага, по последней, используя strrchr | |
| |
|
|
| |
автор: Staz (15.10.2006 в 20:15) |
|
| |
для: kasmanaft
(15.10.2006 в 17:57)
| | | >А что это за регулярное выражение, где именно оно применяется?
Пример кода скрипта можете посмотреть тут: http://www.softtime.ru/scripts/ftpscaner.php | |
| |
|
|
| |
|
|
| |
для: Staz
(15.10.2006 в 20:15)
| | | теперь понятно :)
тут деиствительно не подоидет ето рег. виражение ...
на php.net видел функцию парсинга rawlist, вроде даже использовал :)
(только где-то нужно диапазони в substr подправить ... не совсем правильно, где то било)
сорри за перевод с транслита :)
<?php
function parse_rawlist( $array ) {
for ( $i = 1; $i < count($array); $i++ ) {
$current = $array[$i];
$structure[$i]['perms'] = substr($current, 0, 10);
$structure[$i]['number'] = trim(substr($current, 11, 3));
$structure[$i]['owner'] = trim(substr($current, 15, 8));
$structure[$i]['group'] = trim(substr($current, 24, 8));
$structure[$i]['size'] = trim(substr($current, 33, 8));
$structure[$i]['month'] = trim(substr($current, 42, 3));
$structure[$i]['day'] = trim(substr($current, 46, 2));
$structure[$i]['time'] = substr($current, 49, 5);
$structure[$i]['name'] = substr($current, 55, strlen($current) - 55);
}
return $structure;
}
?>
|
там же есть и другие рег. виражения | |
| |
|
|
| |
автор: Staz (15.10.2006 в 23:06) |
|
| |
для: kasmanaft
(15.10.2006 в 22:37)
| | | Да, эта функция нормально парсит имена файлов с пробелами..
Но вот как в неё добавить рекусрию или как её интегрировать в скрипт поиска сканера фтп от softtime =\ | |
| |
|
|
| |
автор: Staz (15.10.2006 в 23:56) |
|
| |
для: kasmanaft
(15.10.2006 в 22:37)
| | | Нашел ошибку в данной функции: когда размер большой, диапазоны substr меняются и переменным присваются другие значения, не такие, как задумано :( | |
| |
|
|
| |
|
|
| |
для: Staz
(15.10.2006 в 23:56)
| | | вот еще оттуда же:
<?
function cutspaces($str){
while(substr($str,0,1)==" "){$str=substr($str,1);}
return $str;}
$folders=array();
$files=array();
for($i=0;$i<sizeof($list);$i++){ // $list - ftp_rawlist
list($permissions,$next)=split(" ",$list[$i],2);
list($num,$next)=split(" ",cutspaces($next),2);
list($owner,$next)=split(" ",cutspaces($next),2);
list($group,$next)=split(" ",cutspaces($next),2);
list($size,$next)=split(" ",cutspaces($next),2);
list($month,$next)=split(" ",cutspaces($next),2);
list($day,$next)=split(" ",cutspaces($next),2);
list($year_time,$filename)=split(" ",cutspaces($next),2);
if($filename!="." && $filename!=".."){
if(substr($permissions,0,1)=="d"){
$folders[]=$filename;
} else {
$files[]=$filename;}}}
sort($folders);
sort($files);
?>
|
как утверждает автор, оно работает как надо ... | |
| |
|
|
| |
автор: staz (16.10.2006 в 20:15) |
|
| |
для: kasmanaft
(16.10.2006 в 01:19)
| | | Да, пример действительно рабочий.
спасибо, прикрутил кое-как ;) | |
| |
|
|
|