Разделы

А кто-нибудь уже делал транслитерацию кириллицы в именах при загрузке изображений в EvoGallery?

Добрый день!
Собственно вопрос в заголовке.
Кто-нибудь уже допиливал EvoGallery для загрузки изображений с кириллицей в названии?
Если да, то поделитесь пожалуйста измененными файлами или хотя-бы списком файлов, в которые вносились изменения.

Ну т.е. куда там нужно вставить какую-то такую функцию, так чтобы все нормально работало:

function niceFilename($filename) {
    $changes = array(
        "Є"=>"EH", "І"=>"I", "і"=>"i", "№"=>"#", "є"=>"eh",
        "А"=>"A", "Б"=>"B", "В"=>"V", "Г"=>"G", "Д"=>"D",
        "Е"=>"E", "Ё"=>"E", "Ж"=>"ZH", "З"=>"Z", "И"=>"I",
        "Й"=>"J", "К"=>"K", "Л"=>"L", "М"=>"M", "Н"=>"N",
        "О"=>"O", "П"=>"P", "Р"=>"R", "С"=>"S", "Т"=>"T",
        "У"=>"U", "Ф"=>"F", "Х"=>"H", "Ц"=>"C", "Ч"=>"CH",
        "Ш"=>"SH", "Щ"=>"SCH", "Ъ"=>"", "Ы"=>"Y", "Ь"=>"",
        "Э"=>"E", "Ю"=>"YU", "Я"=>"YA", "Ē"=>"E", "Ū"=>"U",
        "Ī"=>"I", "Ā"=>"A", "Š"=>"S", "Ģ"=>"G", "Ķ"=>"K",
        "Ļ"=>"L", "Ž"=>"Z", "Č"=>"C", "Ņ"=>"N", "ē"=>"e",
        "ū"=>"u", "ī"=>"i", "ā"=>"a", "š"=>"s", "ģ"=>"g",
        "ķ"=>"k", "ļ"=>"l", "ž"=>"z", "č"=>"c", "ņ"=>"n",
        "а"=>"a", "б"=>"b", "в"=>"v", "г"=>"g", "д"=>"d",
        "е"=>"e", "ё"=>"e", "ж"=>"zh", "з"=>"z", "и"=>"i",
        "й"=>"j", "к"=>"k", "л"=>"l", "м"=>"m", "н"=>"n",
        "о"=>"o", "п"=>"p", "р"=>"r", "с"=>"s", "т"=>"t",
        "у"=>"u", "ф"=>"f", "х"=>"h", "ц"=>"c", "ч"=>"ch",
        "ш"=>"sh", "щ"=>"sch", "ъ"=>"", "ы"=>"y", "ь"=>"",
        "э"=>"e", "ю"=>"yu", "я"=>"ya", "Ą"=>"A", "Ę"=>"E",
        "Ė"=>"E", "Į"=>"I", "Ų"=>"U", "ą"=>"a", "ę"=>"e",
        "ė"=>"e", "į"=>"i", "ų"=>"u", "ö"=>"o", "Ö"=>"O",
        "ü"=>"u", "Ü"=>"U", "ä"=>"a", "Ä"=>"A", "õ"=>"o",
        "Õ"=>"O");
    $alias=strtr($filename, $changes);
    $alias = strtolower( $alias );
    $alias = preg_replace('/&.+?;/', '', $alias); // kill entities
    $alias = str_replace( '_', '-', $alias );
    $alias = preg_replace('/[^a-z0-9\s-.]/', '', $alias);
    $alias = preg_replace('/\s+/', '-', $alias);
    $alias = preg_replace('|-+|', '-', $alias);
    $alias = trim($alias, '-');
    return $alias;
}

Заранее спасибо!
  • 0
  • 20 апреля 2011, 13:34
  • ivc

Комментарии (7)

RSS свернуть / развернуть
+1
В файлах upload.php и replace.php после
if (is_uploaded_file($_FILES['Filedata']['tmp_name'])){
добавить
$_FILES['Filedata']['name'] = niceFilename($_FILES['Filedata']['name']);
И саму эту функцию добавить в конец.
avatar

Temus

  • 22 апреля 2011, 15:20
0
Спасибо огромное! Все получилось.
avatar

ivc

  • 24 апреля 2011, 13:19
0
А кто-нибудь подскажет необходимость данной функции от хостера зависитили от чего? Буквально вчера поставил evoGallery на peterhost — прекрасно хавает и отображает jpg с кирилицей и пробелами.
avatar

banev

  • 22 апреля 2011, 17:12
0
… теперь думаю транслитерацию делать или так можно оставить?
avatar

banev

  • 22 апреля 2011, 17:12
0
В каком-то роде они все вроде хавают, но если посмотреть на файловую систему, но название файла содержит полную кашу.
avatar

Carw

  • 23 апреля 2011, 20:02
0
А вот с этой кашей не все работает.
avatar

Carw

  • 23 апреля 2011, 20:03
0
Если ничем не ценны оригинальные имена файлов, то я обычно делаю так:


$fileName = md5($_FILES['Filedata']['name']);
$fileExt = substr($_FILES['Filedata']['name'],strpos(...,'.'));
$destFile = $fileName.$fileExt;


С расширением файла возможны варианты. Ну и strpos я не расписываю подробно.

Защита от перезаписи файла — просто проверка в цикле while на существование $destFile и дописывание в конец $fileName случайной цифры.

И никакой каши.
avatar

alooze

  • 24 апреля 2011, 01:14

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.