使用变量时PHP头返回空格


PHP header returning with spaces when using variables?

我之前问过一个问题,但我想我没有抓住要点,所以我要再发一次。

我使用的是标题Content-Disposition。

我以前这样做的代码是这样的:

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

它返回这个:

内容处置附件;filename="Bassnearr-低音头官方.mp3"

注意引号前后的空格。这是一个问题,因为它将扩展名从".mp3"更改为".mp3",后者被识别为不同的文件。必须有办法解决这个问题。我改变了一切,我在谷歌上搜索了一切。我不知道还能做什么?

在放入标头之前,应该对额外的空白进行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}'"");

试试这些:

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

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

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

最后一个可能最适合你。

这些将从字符串中删除空格,只需确保有相应的文件匹配即可,