@konservat0r

Транслит кириллицы в латиницу?

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

static function replaceSpecial($fileName)
{
$fileExt = JFile::getExt($fileName);
$fileNameNoExt = JFile::stripExt($fileName);
$fileNameNoExt = preg_replace('/[^A-Za-z0-9.]/', '_', $fileNameNoExt);

$fileExtLowerCase = strtolower($fileExt);

$fileName = $fileNameNoExt.'.'.$fileExtLowerCase;

return $fileName;
}

  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 2
@exmmth
Перед строкой preg_replace воспользуйтесь стандартным функционалом транслитерации joomla
вот тут пример
Ответ написан
Если стандартной транслитерации (которую уже упомянули) недостаточно или она не совсем подходит,
можете взять контроль над этим, прописав и потом используя PHP функцию. Я пользуюсь этим в таких случаях:
// translit
function rus2lat4alias($text) {
    $text = mb_strtolower(trim($text));
    $text = preg_replace("/([0-9])х([0-9])/", "$1-$2", $text); // Ха русская
    $text = preg_replace("/([0-9])x([0-9])/", "$1-$2", $text); // Икс латинская
    $ru = explode(" ", "а б в г д е ё ж з и й к л м н о п р с т у ф х ц ч ш щ ъ ы ь э ю я");
    $lat = explode(" ", "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 ju ja");
    $text = str_replace($ru, $lat, $text);
    unset($ru, $lat);
    $text = preg_replace("/[^a-zA-Z0-9\-]/", "-", $text);
    $text = preg_replace("/[-]{2,}/", "-", $text);
    $text = trim($text, '-');
    return $text;
}

Пример использования:
$text = 'Некий текст - пуcть будет с размером 300х400 :)';
$alias  = rus2lat4alias($text);

Из блога.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Crazy Studio Москва
от 60 000 до 120 000 ₽
RecruitIT Москва
от 120 000 до 150 000 ₽
Roonix Белореченск
от 40 000 до 80 000 ₽
21 окт. 2020, в 22:40
300 руб./за проект
21 окт. 2020, в 22:34
25000 руб./за проект
21 окт. 2020, в 21:24
7000 руб./за проект