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

Перед загрузкой файлов на сайт через соответствующее 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
Блог: http://archerlcms.blogspot.com



Опубликовал admin
15 Авг, Воскресенье 2010г.



Программирование для чайников.