34 lines
1.0 KiB
Go
34 lines
1.0 KiB
Go
package database
|
||
|
||
import (
|
||
"regexp"
|
||
"strings"
|
||
)
|
||
|
||
// SanitizeFilename очищает имя файла от недопустимых символов
|
||
func SanitizeFilename(name string) string {
|
||
// Заменяем пробелы на подчеркивания
|
||
name = strings.ReplaceAll(name, " ", "_")
|
||
|
||
// Заменяем тире и другие символы на подчеркивания
|
||
name = strings.ReplaceAll(name, "-", "_")
|
||
|
||
// Удаляем все символы кроме букв, цифр и подчеркиваний
|
||
reg := regexp.MustCompile(`[^a-zA-Z0-9_а-яА-ЯёЁ]`)
|
||
name = reg.ReplaceAllString(name, "_")
|
||
|
||
// Убираем множественные подчеркивания
|
||
reg = regexp.MustCompile(`_+`)
|
||
name = reg.ReplaceAllString(name, "_")
|
||
|
||
// Убираем подчеркивания в начале и конце
|
||
name = strings.Trim(name, "_")
|
||
|
||
// Если имя пустое - возвращаем дефолтное
|
||
if name == "" {
|
||
name = "client"
|
||
}
|
||
|
||
return name
|
||
}
|