Загруз-центр для JohnCMS 3/4.xx

59.35K
.
cuHyc, str_replace() - читай мануал по её использованию.
.
cuHyc
Бывший человек
Ну вот к примеру я использую эту функцию:
function translate($string) {
        # Замена символов
        $replace = [
            'а' => 'a',   'б' => 'b',
            'в' => 'v',   'г' => 'g',
            'д' => 'd',   'е' => 'e',
            'ё' => 'yo',  'ж' => 'j',
            'з' => 'z',   'и' => 'i',
            'й' => 'y',   'к' => 'k',
            'л' => 'l',   'м' => 'm',
            'н' => 'n',   'о' => 'o',
            'п' => 'p',   'р' => 'r',
            'с' => 's',   'т' => 't',
            'у' => 'u',   'ф' => 'f',
            'х' => 'h',   'ц' => 'ts',
            'ч' => 'ch',  'ш' => 'sh',
            'щ' => 'sch', 'ъ' => '',
            'ы' => 'i',   'ь' => '',
            'э' => 'e',   'ю' => 'ju',
            'я' => 'ja',  ' ' => '-'
        ];
        
        # Переводим строку в нижний регистр
        $string = mb_strtolower($string, 'utf-8');
        
        # Заменяем
        $string = strtr($string, $replace);
        
        # Заменяем все лишние символы и возвращаем
        return
            preg_replace('~[^a-z\-]~', null, $string);
    }


далее я так понимаю её нужно применить в скрипте

$name = translate($_FILES["fail"]["name"]);


Пол ночи тыркал в downloads/includes/files_upload.php

получилось применить только так -
$new_file = translate($_FILES["fail"]["name"]);


но так она стирает расширение - и уже выдает ошибку о не правильном расширении

Товарисчи, если не составит труда, подскажите как правильно её применить в downloads/includes/files_upload.php
.
kantry
Hey guys! Finally I'm gonna change status!?
cuHyc, Найти проверку на символы и
$fname = translate($fname);// перед ней вставить translate
if (preg_match("/[^\da-z_\-.]+/", $fname)) {
   $error[] = _t('The file name contains invalid characters');
}
.
Бывший человек
kantry, Так работает, но теперь он точку стирает которая между именем и расширением, есть решение проблемы?
.
kantry
Hey guys! Finally I'm gonna change status!?
cuHyc, Ну так ты в функции своей точку то добавь preg_replace('~[^a-z\-\.]~', null, $string);
.
Бывший человек
# kantry (30.09.2019 / 19:47)
cuHyc, Ну так ты в функции своей точку то добавь preg_replace('~[^a-z\-\.]~', null, $string);
.
kantry, внутри​ символьного класса метасимволы интерпретируются как литералы, поэтому экранирование не требуется:
~[^a-z.-]~
Всего: 3887