Есть моя функция очистки.
function sanitize($string, $forceLowercase = false, $anal = false, $limitFilename = 128)
{
$strip = array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", "+", "[", "{", "]",
"}", "\\", "|", ";", ":", "\"", "'", "‘", "’", "“", "”", "–", "—",
"—", "–", ",", "<", ".", ">", "/", "?");
$clean = trim(str_replace($strip, "", strip_tags($string)));
$clean = preg_replace('/\s+/', "-", $clean);
$clean = ($anal) ? preg_replace("/[^a-zA-Z0-9]/", "", $clean) : $clean;
$clean = ($forceLowercase) ?
(function_exists('mb_strtolower')) ?
mb_strtolower($clean, 'UTF-8') :
strtolower($clean) :
$clean;
$specialChars = "\x00\x21\x22\x24\x25\x2a\x2f\x3a\x3c\x3e\x3f\x5c\x7c";
$clean = str_replace(str_split($specialChars), '_', $clean);
$clean = substr($clean, 0, $limitFilename);
$clean = mb_convert_encoding($clean, 'UTF-8', 'UTF-8');
$clean = html_entity_decode($clean);
return $clean;
}
Я посылаю имя файла с этим заголовком работает в английской строке.
header('Content-Disposition: attachment; filename="' . sanitize($string) . '.3gp"');
Но не работает с этой строкой
(자막) 2018 브리튼 즈 갓 탤런트 - 마크 스펠 만 "'진짜 마술' 은 이런 것" (Британский талант - Марк Спельманн) 101 부저
Я получаю эту ошибку.
AH02430: заголовок ответа «Content-Disposition», значение «attachment»;имя файла = "\ XEC \ x9e \ x90 \ xeb \ xa7 \ x89-2018- \ xeb \ XB8 \ x8c \ xeb \ xa6 \ XAC \ фиксировано \ X8A \ XBC \ XEC \ xa6 \ x88- \ хеа \ XB0 \ x93-\ фиксировано \ x83 \ xa4 \ xeb \ x9f \ XB0 \ фиксировано \ X8A \ XB8 --- \ xeb \ xa7 \ x88 \ фиксировано \ x81 \ xac- \ XEC \ X8A \ xa4 \ фиксировано \ x8e \ xa0 \ xeb \ xa7\ x8c- \ XEC \ xa7 \ x84 \ XEC \ xa7 \ x9c- \ xeb \ xa7 \ x88 \ XEC \ x88 \ xa0 \ шм ?? \ Ъ ?? \ xc8 \ x88- \ x10 ?? \ x18 ???\ x11 ?? \ b \ x15 \ x18 \ x19? \ bH \ x13X ?? \ x14? \ x19 \ x1bX ?? H ??????. 3gp "'содержит недопустимые символы, прерывая запрос
Где моя ошибка?