PHP标头在使用变量时返回空格?

时间:2012-02-06 03:59:53

标签: php variables header spacing

我之前已经提过一个问题,但我想我错过了这一点,所以我要再发一次。

我正在使用标题Content-Disposition。

我以前使用的代码是这样的:

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

它返回:

  

内容 - 处置附件; filename ='Bassnectar - Bass Head Official.mp3'

注意引号前后的空格。这是一个问题,因为它将扩展名从“.mp3”更改为“.mp3”,这被识别为不同的文件。必须有一些方法来解决这个问题。我改变了一切,我用Google搜索了一切。我不知道还剩下什么?

2 个答案:

答案 0 :(得分:1)

在放入标题之前,您应该对其进行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}\"");

答案 1 :(得分:0)

试试这些:

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

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

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

这最后一个对您来说可能是最好的。

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