Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Опредление не латин файлов
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Опредление не латин файлов

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

1. pantela - 16 Января, 2018 - 19:20:05 - перейти к сообщению
Здраст,
На сервере имеются файлы, которые надо искать по scandir();.
Никак не могу определить напр. Русский

Пробовал напр.
PHP:
скопировать код в буфер обмена
  1. $dir = iconv("windows-1251", "UTF-8", $dir);
  2. $files = scandir($dir);


Хотел бы, даже китайские файлы определять ))

Спасибо.
2. pantela - 19 Января, 2018 - 14:26:11 - перейти к сообщению
Всё так сложно, или наоборот просто... Растерялся
3. andrewkard - 19 Января, 2018 - 14:32:00 - перейти к сообщению
может
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $iterator = new FilesystemIterator(".");
  4. $filelist = array();
  5. foreach($iterator as $entry) {
  6.     if (strpos($entry->getFilename(), "te") === 0) {
  7.         $filelist[] = $entry->getFilename();
  8.     }
  9. }
  10.  
  11.  

?
4. pantela - 19 Января, 2018 - 15:16:04 - перейти к сообщению
Файлы так определяет, но вот русский файл нет ???????.txt

+ убрал тут с примера if (strpos($entry->getFilename(), "te") === 0) проверку что бы результат видеть, + он у меня и папку подхвотил, а мне только файоы надо.

Тут мне главное русский файл определить, а там scandir() думаю можно оставить.
5. andrewkard - 19 Января, 2018 - 16:23:11 - перейти к сообщению

русский файл

а такие есть?

pantela пишет:
???????.txt


что то с кодировкой, раздебажте строку
6. pantela - 20 Января, 2018 - 00:14:04 - перейти к сообщению
не понял о чём вы...
файл у меня с именим "Документ.txt" вот и сканировать не могу директорию...

Не помогло
PHP:
скопировать код в буфер обмена
  1. $dir = "../uploaded";
  2. $files = scandir($dir);
  3.  
  4. foreach($files as $value){
  5.   echo urldecode($value);
  6.   echo "<br />";
  7.  
  8.   echo iconv('utf-8', 'cp1252', $value);
  9.   echo "<br />";
  10.  
  11.   echo mb_convert_encoding($value, 'ISO-8859-1', 'UTF-8');
  12.   echo "<br />";
  13.  
  14.   echo utf8_decode($value);
  15.   echo "<br />";
  16.  
  17.   echo "<br />";
  18. }
7. Строитель - 20 Января, 2018 - 00:49:30 - перейти к сообщению
pantela, попробуйте таким способом
Спойлер (Отобразить)
8. pantela - 20 Января, 2018 - 01:16:41 - перейти к сообщению
Нет всё равно не определяет... + у меня может быть не только кирилица, но и напр. китайский файл, как можно сделать универсально...?
Не думал что вопрос такой сложности был бы...
9. Строитель - 20 Января, 2018 - 02:21:53 - перейти к сообщению
Строитель пишет:
Нет всё равно не определяет
Может проблема в чём-то ещё? т.к. я на локалке проверял, без iconv() символы в кодировке Windows-1251 отображались не правильно В затруднении
10. LIME - 20 Января, 2018 - 10:26:50 - перейти к сообщению
http://i[dot]voenmeh[dot]ru/kafi5/Kam[dot]lo[dot][dot][dot]inform/UTF-8[dot]htm
проверяйте побайтно чтоб не было двухбайтных кодов
(Добавление)
2 - разбить строку посимвольно и проверять чтоб код каждого чтоб был не более 127
http://php.net/ord - первый комент
11. pantela - 23 Января, 2018 - 13:03:13 - перейти к сообщению
Чёрт не догоняю как сделать Огорчение
Перенесите пожалуйста тему в раздел "Напишите за меня", может помогут..
Спасибо.
12. Строитель - 27 Января, 2018 - 12:32:24 - перейти к сообщению
pantela пишет:
Перенесите пожалуйста тему в раздел "Напишите за меня"
Перенёс.
13. pantela - 29 Января, 2018 - 10:36:59 - перейти к сообщению
Вопрос решён, спс.

 

Powered by ExBB FM 1.0 RC1