Разрешение на - в названии файла

This commit is contained in:
Podlesnov Phedor 2021-05-21 11:36:47 +03:00
parent 6173eb4892
commit 958033a057
3 changed files with 75 additions and 76 deletions

View file

@ -4,53 +4,53 @@ class Tools_String {
// from creole // from creole
static function strToArray($str) { static function strToArray($str) {
$str = substr($str, 1, -1); // remove { } $str = substr($str, 1, -1); // remove { }
$res = array(); $res = array();
$subarr = array(); $subarr = array();
$in_subarr = 0; $in_subarr = 0;
$toks = explode(',', $str); $toks = explode(',', $str);
foreach($toks as $tok) { foreach($toks as $tok) {
if ($in_subarr > 0) { // already in sub-array? if ($in_subarr > 0) { // already in sub-array?
$subarr[$in_subarr][] = $tok; $subarr[$in_subarr][] = $tok;
if ('}' === substr($tok, -1, 1)) { // check to see if we just added last component if ('}' === substr($tok, -1, 1)) { // check to see if we just added last component
$res[] = static::strToArray(implode(',', $subarr[$in_subarr])); $res[] = static::strToArray(implode(',', $subarr[$in_subarr]));
$in_subarr--; $in_subarr--;
} }
} elseif ($tok[0] === '{') { // we're inside a new sub-array } elseif ($tok[0] === '{') { // we're inside a new sub-array
if ('}' !== substr($tok, -1, 1)) { if ('}' !== substr($tok, -1, 1)) {
$in_subarr++; $in_subarr++;
// if sub-array has more than one element // if sub-array has more than one element
$subarr[$in_subarr] = array(); $subarr[$in_subarr] = array();
$subarr[$in_subarr][] = $tok; $subarr[$in_subarr][] = $tok;
} else { } else {
$res[] = static::strToArray($tok); $res[] = static::strToArray($tok);
} }
} else { // not sub-array } else { // not sub-array
$val = trim($tok, '"'); // remove " (surrounding strings) $val = trim($tok, '"'); // remove " (surrounding strings)
// perform type castng here? // perform type castng here?
$res[] = $val; $res[] = $val;
} }
} }
return $res; return $res;
} }
//Нормализация строк на русском //Нормализация строк на русском
static function normalizeRussian($str) { static function normalizeRussian($str) {
$result = preg_replace('/\s+/',' ', $str); $result = preg_replace('/\s+/',' ', $str);
if (is_string($result)) { if (is_string($result)) {
$result = trim($result); //Замена длинных пробелов на одинарные, пробелы по краям $result = trim($result); //Замена длинных пробелов на одинарные, пробелы по краям
$result = mb_strtolower($result); $result = mb_strtolower($result);
$result = preg_replace('/ё/','е', $str); //е на ё $result = preg_replace('/ё/','е', $str); //е на ё
} }
return $result; return $result;
} }
//Проверка равенства двух строк на русском языке. //Проверка равенства двух строк на русском языке.
static function equalRussianCheck($str1,$str2) { static function equalRussianCheck($str1,$str2) {
return self::normalizeRussian($str1) == self::normalizeRussian($str2); return self::normalizeRussian($str1) == self::normalizeRussian($str2);
} }
@ -79,7 +79,7 @@ class Tools_String {
} }
static function encodestring($st) { static function encodestring($st) {
$st = self::mb_strtr($st,"абвгдеёзийклмнопрстуфхъыэ !+-()", "abvgdeeziyklmnoprstufh_ie______"); $st = self::mb_strtr($st,"абвгдеёзийклмнопрстуфхъыэ !+()", "abvgdeeziyklmnoprstufh_ie_____");
$st = self::mb_strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ", "ABVGDEEZIYKLMNOPRSTUFH_IE"); $st = self::mb_strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ", "ABVGDEEZIYKLMNOPRSTUFH_IE");
$st = strtr($st, array( $st = strtr($st, array(
" " => '_', " " => '_',
@ -94,7 +94,7 @@ class Tools_String {
"#" => '_', "#" => '_',
"*" => '_', "*" => '_',
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh", "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya", "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH", "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA", "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"Й"=>"i", "й"=>"ie", "ё"=>"Ye", "Й"=>"i", "й"=>"ie", "ё"=>"Ye",

View file

@ -201,4 +201,3 @@ class Tools_TemplateImage
} }
} }
} }