Преобразование имен файлов на PHP перед загрузкой на сайт - WebRound.ru
На главную
Карта сайта
Обратная связь
Портал Хабаровска
WebRound.ru
17 декабря 2018
Предыдущий баннерСлудующий баннер
Статьи > Преобразование имен файлов на PHP перед загрузкой на сайт

Преобразование имен файлов на PHP перед загрузкой на сайт

28.07.10  ArcherL
Перед загрузкой файлов на сайт через соответствующее HTML-поле (тег «input» cтипом «file») часто необходимо очистить имя файла от кириллицы и специальных символов (обычно оставляют только латинские буквы, цифры и, возможно, некоторые заданные символы).

В данной статье я расскажу о способе преобразования имен файлов на PHP без применения регулярных выражений.

Для начала создадим функцию для перевода русских букв в латинские буквы. Назовем ее letter_trans. Функция принимает строку с именем файла и с помощью стандартной функции PHPstrtrпроизводит замену сначала просто букв, а затем их сочетаний.

function letter_trans($str)
{
$str = strtr($str,
«абвгдежзийклмнопрстуфыэАБВГДЕЖЗИЙКЛМНОПРСТУФЫЭ»,
«abvgdegziyklmnoprstufieABVGDEGZIYKLMNOPRSTUFIE«);
return strtr($str, array( 'е'=>»yo», 'х'=>«h», 'ц'=>«ts», 'ч'=>«ch», 'ш'=>«sh»,
'щ'=>«shch», 'ъ'=>'', 'ь'=>'', 'ю'=>«yu», 'я'=>«ya»,
'Е'=>«Yo», 'Х'=>«H», 'Ц'=>«Ts», 'Ч'=>«Ch», 'Ш'=>«Sh»,
'Щ'=>«Shch», 'Ъ'=>'', 'Ь'=>'', 'Ю'=>«Yu», 'Я'=>«Ya»));
}

Далее необходимо удалить лишние символы, оставив только латинские буквы, цифры и некоторые заданные символы. Для этого создаем функцию trans. Сначала мы вызываем созданную ранее функцию letter_trans. Далее заменяем пробелы на знак подчеркивания. Затем из полученной строки выбираем только латинские буквы, цифры и некоторые символы, заданные в массиве $symbols.

function trans($str)
{
$symbols = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '_', '.', '-');
$str = strtolower(letter_trans($str));
$str = str_replace(' ', '_', $str);
$str_result = '';
$len = strlen($str);
for ($i = 0; $i < $len; $i++)
{
$s = $str[$i];
if (in_array($s, $symbols))
$str_result.= $s;
}
return $str_result;
}

Источник статьи: http://archerl.com/php-file-name-conversion