Опубликовано: 13 ноября 201213 г Парни поставил полезный мод по мультизагрузке аттачей. В превью аттачей не отображаются файлы с киррилическим написанием. Сделал как советовали: Как сделать, чтобы прикреплённые имена файлов имели русские символы в названии? Для этого необходимо открыть файл ./ips_kernel/class_upload.php, найти: //------------------------------------------------- // Make the uploaded file safe //------------------------------------------------- $FILE_NAME = preg_replace( "/[^\w\.]/", "_", $FILE_NAME );Заменить на: //------------------------------------------------- // Make the uploaded file safe //------------------------------------------------- $FILE_NAME = preg_replace( "/[^a-zA-Z0-9а-яА-Я\-\.\_]/", "_", $FILE_NAME ); Обновил кэш, и всё равно засада осталась. Не подскажите в чём может быть засада, есть мысли ?К сожалению с автором мода связаться не могу Изменено 13 ноября 201213 г пользователем PaulZibert
Опубликовано: 13 ноября 201213 г $FILE_NAME = preg_replace( "/[^a-zA-Z0-9а-яА-Я\-\.\_]/", "_", $FILE_NAME ); Наверняка проблема в кодировке и регулярки не распознают кириллицу. Можно решить проблему, заменив "белый список" на "черный": http://pastebin.com/9qTg5JEN
Опубликовано: 13 ноября 201213 г Автор Вы извините профана, а нужно первый или второй код вставлять отсюда ? http://pastebin.com/9qTg5JENИ что значит белый и черный ?Заранее спасибо за ответы и терпение !
Опубликовано: 13 ноября 201213 г Это вообще что за проверка, когда она применяется, при загрузки файлов или при их отображении? Если первый случай, то естественно срабатывать не будет, сколько там не чисти кеш. http://phpfaq.ru/debug#debug вам в помощь.
Опубликовано: 13 ноября 201213 г Я, вообще говоря, тоже не в курсе, что там в двойке происходит. Но ТС указал на конкретную строку - я предложил другой вариант длинной в две строки, делающий то же самое, но не полагающийся на регулярки в той же мере. А в большем уже помочь или подсказать не смогу.
Опубликовано: 13 ноября 201213 г Автор Спасибо вам всем большое ! Сам я не программер, придется сносить мод мультиаттачей, ибо решение проблемы не увидел (
Опубликовано: 13 ноября 201213 г Ну да, это регулярка находится в методе upload_process (/ips_kernel/class_upload.php), так с чего ТС решил что надо очищать кеш мне тоже непонятно. @PaulZibert, если у вас utf-8 попробуйте заменить $FILE_NAME = preg_replace( "/[^\w\.]/", "_", $FILE_NAME ); на $FILE_NAME = preg_replace( '/[^а-яa-z0-9.]+/ui', '_', $FILE_NAME ); Так же попробуйте без флага u (u который перед i)Проверять следует загрузкой файла, а не чисткой кеша.
Опубликовано: 13 ноября 201213 г Автор Большое спасибо ! Вот попробовал поставить вначале с флагом, потом без. Не сработало ((Проверял путем загрузки файла. Вот метод.http://narod.ru/disk/63666726001.950fcf1aa9fee3f65e30fafd31230b66/class_upload.rar.html
Опубликовано: 14 ноября 201213 г Автор Задача была решена товарищем вот так: $upoptfile = $file['name']; $upoptfile=strtr($upoptfile,"абвгдеёзийклмнопрстуфхъыэ","abvgdeeziyklmnoprstufh'ie"); $upoptfile=strtr($upoptfile,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ","ABVGDEEZIYKLMNOPRSTUFH'IE"); $upoptfile=eregi_replace(" ","_",$upoptfile); $file['name']=strtr($upoptfile, array( "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya", "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA", "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye", "?"=>"_", "№"=>"-"));
Опубликовано: 14 ноября 201213 г У вас похоже проблемы с локалью. Лучше по этому поводу обратится к ТП. Если есть ssh покажите результат команды locale -a | grep -i ru
Опубликовано: 14 ноября 201213 г Есть еще такой вариант :) $FILE_NAME = iconv( 'windows-1251', 'utf-8', $FILE_NAME ); $FILE_NAME = preg_replace('/[^\pL0-9.]+/u', '_', $FILE_NAME ); $FILE_NAME = iconv( 'utf-8', 'windows-1251', $FILE_NAME );
Парни поставил полезный мод по мультизагрузке аттачей.
В превью аттачей не отображаются файлы с киррилическим написанием.
Сделал как советовали:
Как сделать, чтобы прикреплённые имена файлов имели русские символы в названии?
Обновил кэш, и всё равно засада осталась. Не подскажите в чём может быть засада, есть мысли ?
К сожалению с автором мода связаться не могу
Изменено пользователем PaulZibert