Кодировка в названии файла

205
03 января 2018, 20:11

Проблема такая: моя программа получает файл от пользователя. Я изменяю все пробелы так: $p = str_ireplace(' ', '_', $_FILES['filename']['name']);.

Далее файл сохраняется под именем переменной $p. В итоге файл сохраняется под таким именем: Верн_Жюль._20_000_лье_РїРѕРґ_РІРѕРґРѕР№.fb2. Я знаю что это из-за кодировки, т.к. $_FILES['filename']['name'] = 'Верн Жуль. 20 000 лье под водой. Подскажите, пожалуйста, как это исправить!

Answer 1

Попробуйте эту функцию:

function chpu ($path){return strtr($path,array("«"=>"", "»"=>"", " "=>"_", "-"=>"_", "№"=>"", "є"=>"e", "і"=>"i", "І"=>"i", "$"=>"", ";"=>"", ":"=>"", ","=>"", "."=>"", "["=>"", "'"=>"", "]"=>"", "*"=>"_", "/"=>"_", "|"=>"_", "{"=>"", "}"=>"", "="=>"_", "+"=>"", "?"=>"", "!"=>"", "@"=>"", "#"=>"", "%"=>"", "^"=>"", "&"=>"", "("=>"", ")"=>"", "\""=>"", "а"=>"a", "б"=>"b", "в"=>"v", "г"=>"g", "д"=>"d", "е"=>"e", "ё"=>"jo", "ж"=>"zh", "з"=>"z", "и"=>"i", "й"=>"j", "к"=>"k", "л"=>"l", "м"=>"m", "н"=>"n", "о"=>"o", "п"=>"p", "р"=>"r", "с"=>"s", "т"=>"t", "у"=>"u", "ф"=>"f", "х"=>"x", "ц"=>"c", "ч"=>"ch", "ш"=>"sh", "щ"=>"shh", "ъ"=>"", "ы"=>"y", "ь"=>"", "э"=>"je", "ю"=>"ju", "я"=>"ya", "йо"=>"j/o", "йе"=>"j/e", "А"=>"a", "Б"=>"b", "В"=>"v", "Є"=>"e", "Г"=>"g", "Д"=>"d", "Е"=>"e", "Ё"=>"jo", "Ж"=>"zh", "З"=>"z", "И"=>"i", "Й"=>"j", "К"=>"k", "Л"=>"l", "М"=>"m", "Н"=>"n", "О"=>"o", "П"=>"p", "Р"=>"r", "С"=>"s", "Т"=>"t", "У"=>"u", "Ф"=>"f", "Х"=>"x", "Ц"=>"c", "Ч"=>"ch", "Ш"=>"sh", "Щ"=>"shh", "Ъ"=>"", "Ы"=>"y", "Ь"=>"", "Э"=>"je", "Ю"=>"ju", "Я"=>"ya", "ЙО"=>"", "ЙЕ"=>"")); }

Когда-то пользовался ею для формирования ЧПУ из заголовка статьи, но для Вас она тоже может подойти.

$p = chpu($_FILES['filename']['name']);

Название chpu можно изменить на свое :)

READ ALSO
C++ Написать программу «Подсчет единичных островов». Заполнить двухмерный массив 12х12 0 и 1

C++ Написать программу «Подсчет единичных островов». Заполнить двухмерный массив 12х12 0 и 1

0 – это вода, 1 – это земляВоды должно быть в три раза больше, чем земли

293
Сделать треугольник циклом [требует правки]

Сделать треугольник циклом [требует правки]

Мне нужно сделать такой треугольник циклом, все перепробовал, не получилось

230
Как загружается в память .XML Файл DOM C++?

Как загружается в память .XML Файл DOM C++?

Хотелось бы узнать на Примере от - Microsoft

241
Два исключения - это много?

Два исключения - это много?

Вычитал у Майерса, то что два исключения в деструкторе - это слишком многоЧто он этим хотел сказать? Одно исключение - это не много, а вот два...

266