PHP заголовок возвращается с пробелами при использовании переменных? - PullRequest
1 голос
/ 06 февраля 2012

Я задавал вопрос ранее, но, думаю, я упустил момент, поэтому я собираюсь опубликовать его снова.

Я использую заголовок Content-Disposition.

Код, который я использовал для этого, был таким:

header("Content-Disposition: attachment; filename='{$name}'");

Возвращает это:

Приложение Content-Disposition; filename = 'Bassnectar - Bass Head Official.mp3'

Обратите внимание на пробелы до и после кавычек. Это проблема, потому что она изменяет расширение с «.mp3» на «.mp3», которое распознается как другой файл. Должен быть какой-то способ исправить это. Я все изменил, я все погуглил. Я не знаю, что еще делать?

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Вы должны URL кодировать и обрезать лишние пробелы перед размещением в заголовке.

$name = rawurlencode(trim($name));
header("Content-Disposition: attachment; filename='{$name}'");

Окончательное решение

$name = $extract['original_name'];
$name2 = urlencode(trim($name));
$name3 = str_replace("+", " ", $name2);
$quote = '"';
header("Content-Disposition: attachment; filename=$quote{$name3}$quote");

Я почти уверен, что вы можете это убрать:

$name = $extract['original_name'];
$name = urlencode(trim($name));
$name = str_replace("+", " ", $name);
header("Content-Disposition: attachment; filename=\"{$name}\"");

И, если кажется, что urlencode не имеет значения, я почти уверен, что вы можете просто сделать это:

$name = $extract['original_name'];
$name = trim($name);

header("Content-Disposition: attachment; filename=\"{$name}\"");
0 голосов
/ 06 февраля 2012

Попробуйте:

<?php
$str = preg_replace('/\s\s+/', ' ', $str);
?>

или

<?php
$string = trim(ereg_replace(' +', ' ', $string));
?>

или

<?php
$name=preg_replace('/\s+/','',$name);
?>

Последний работает, вероятно, лучше для вас.

Это удалит пробелы из вашей строки, просто убедитесь, что есть соответствующий файл для сопоставления,

...