Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Opendir, readdir - папки с не-английскими именами
 
 автор: toproot   (04.09.2012 в 13:05)   письмо автору
 
 

 function pao_dir_array($dirname) {
     $dir = opendir($dirname);
     global $fpx; global $toproot;
     while(($file = readdir($dir)) !== false)
     {
         if($file != "." && $file != "..")
         {
             if(is_dir("$dirname/$file") OR is_dir(iconv('utf-8','windows-1251',"$dirname/$file")) OR is_dir(iconv('windows-1251','utf-8',"$dirname/$file"))) {
                 $array['dir'][] = str_replace("$fpx$toproot/","","$dirname/$file");
                 $array['abs'][] = "$file";
             }
         }
     }           // print_r($array);
 return $array;
 }

Не записывает в масив папок с русскими названиями.
Если вместо условий is_dir(...) поставить TRUE, тогда они записываютсья в массив, но вопросительными знаками .
Например Ελλινικα γλοσσα - ???????a ???ssa
РАШАН - ?????
Что подскажете, может еще какието кодировки для иконв. или как-то обработать строку "$dirname/$file" ?
..escape_string & htmlspecialchars не помогают.

Спасибо!

  Ответить  
 
 автор: confirm   (04.09.2012 в 15:13)   письмо автору
 
   для: toproot   (04.09.2012 в 13:05)
 

А вы можете пояснить смысл такого условия?

  Ответить  
 
 автор: toproot   (04.09.2012 в 16:59)   письмо автору
 
   для: confirm   (04.09.2012 в 15:13)
 

Мне нужно отообразить только папки. Для этого использую is_dir().
Если Вы про iconv() - не помогает. Думал может функция is_dir() определит нормально папку с иконв. но непомогает..
Задача только в том, чтоб функция is_dir("$dirname/$file") увидела папку.
а $file - не на английском языке.

Что мне зделать с "$dirname/$file" ?

  Ответить  
 
 автор: confirm   (04.09.2012 в 18:05)   письмо автору
 
   для: toproot   (04.09.2012 в 16:59)
 

Ну а зачем вообще iconv()? В какой кодировке вы работаете, в такой у вас и будут создаваться имена директорий/фалов, откуда могут взяться у вас имена разнокалиберные?
Создайте на локальном хосте папку "Новая папка", положите в нее файлы (рус/анг имен), и запустите этот код:
<?
$file 
array_map('basename',glob('новая папка/*'));
print_r($file);

Под Windows, у вас скрипт должен быть сохранен в кодировке 1251, и вы увидите массив имен файлов папки. Если он будет сохранен в кодировке utf-8, в которой сама Win не создает имен, то вы получите пустой массив. А вот в этом случае и примените тогда iconv(). Но чтобы семеро под лавками... это знаете ли какой-то мусор на сервере тогда.

  Ответить  
 
 автор: toproot   (04.09.2012 в 23:26)   письмо автору
 
   для: confirm   (04.09.2012 в 18:05)
 

так я могу и из базы данных вынять имена если мне нужно, но в данном случае мне нужно именно прочесть реальные имена. нужно просканировать файловую систему.
Может попробую через стандартную конструкцию fopen итд.

  Ответить  
 
 автор: confirm   (04.09.2012 в 23:35)   письмо автору
 
   для: toproot   (04.09.2012 в 23:26)
 

А glob() значит не может вам выдать чего у вас там в системе? Причем тут те или иные функции? glob(), это замена совокупности функций opendir(), readdir()...
Пишите на чем хотите, вопрос к вам иного характера - на кой черт у вас чехарда с iconv()?

  Ответить  
 
 автор: toproot   (04.09.2012 в 23:54)   письмо автору
 
   для: confirm   (04.09.2012 в 23:35)
 

П-нял с glob() спасибо. завтра попробую.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования