From 6d1d99c23f243846acbe29feb6d705d930730516 Mon Sep 17 00:00:00 2001 From: Repellent Date: Sun, 4 Jan 2026 21:03:56 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=83=D1=81=D1=82=D0=B0=D1=80=D0=B5=D0=B2=D1=88=D0=B8?= =?UTF-8?q?=D0=B9=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=9F=D0=BE=D0=B4?= =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20=D0=B8=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=B8=D1=80=D0=B5=D0=BA=D1=82=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- functions/func.locale.php | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/functions/func.locale.php b/functions/func.locale.php index 2cfc0af..4512ca3 100644 --- a/functions/func.locale.php +++ b/functions/func.locale.php @@ -739,19 +739,30 @@ * @param string $st * @return string */ - function prepare_fname($st) - { - $st = strip_tags($st); +function prepare_fname($st) +{ + $st = strip_tags($st); - $st = strtr($st,'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯ', - 'abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщьъыэюя'); + // 1. Сначала пробуем использовать новый метод + if (function_exists('mb_strtolower')) { + $st = mb_strtolower(trim($st), 'UTF-8'); + } else { + // Запасной вариант (старый), если mbstring не установлен + $st = strtr($st,'ABCDEFGHIJKLMNOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЪЫЭЮЯ', + 'abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщьъыэюя'); + } - $st = translit_string(trim($st)); + // 2. Транслитерация + if (function_exists('translit_string')) { + $st = translit_string($st); + } - $st = preg_replace(array('/[^a-z0-9_-]/', '/--+/'), '-', $st); + // 3. Финальная чистка + // Заменяем всё, что не буквы и не цифры, на дефис + $st = preg_replace(array('/[^a-z0-9_-]/', '/--+/'), '-', $st); - return trim($st, '-'); - } + return trim($st, '-'); +} /**