2010-10-13 6 views
1

Je suis en train d'imprimer la valeur de $name

mais il continue d'imprimer sur $name au lieu de la valeur est la ligne ici:

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

Répondre

4

PHP évaluera uniquement les variables dans les chaînes entre guillemets, pas les guillemets simples comme vous l'avez utilisé dans votre exemple.

Essayez plutôt (si vous avez besoin de sortie guillemets doubles dans une chaîne entre guillemets, vous devez les échapper avec une barre oblique inverse, sinon PHP les traitera comme fin de chaîne delimiter):

header("Content-Disposition: attachment; filename=\"$name\""); 
+0

qui n'a pas fonctionné qui a imprimé le nom de la page php. – DonJuma

+0

ORIGNINAL: header ('Content-Disposition: attachment; nom de fichier = "BONJOUR"'); – DonJuma

+0

J'essaie de faire en sorte qu'il y ait une variable où bonjour est mais la commande de nom de fichier a besoin de guillemets doubles – DonJuma

0

Essayez comme ceci:

header('Content-Disposition: attachment; filename='.$name); 
+1

cette volonté break si $ name contient des espaces, d'où la raison pour laquelle son code original l'a fait entre guillemets. – Spudley

-1
header('Content-Disposition: attachment; filename='.$name); 
+1

Vous avez ajouté un '' 'avant la parenthèse fermante. – Ruel

+0

Il vient de faire une faute de frappe. – lfx

2

interpolation de chaîne ne se fait pas entre guillemets simples.

$name = "test"; 
echo "Value: $name"; // Value: test 
echo 'Value: $name'; // Value: $name 

Plus de détails here.

1

Lorsque vous traitez des chaînes single-quoted, toujours concaténer les variables.

header('Content-Disposition: attachment; filename="' . $name . '"'); 
+0

mais le nom de fichier a besoin de guillemets doubles et en a besoin d'un autre à la fin – DonJuma

+1

Oui, il y a :) – Ruel

2

Je pense que c'est ce que vous cherchez

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

Cela donnerait un en-tête comme ceci:

Content-Disposition: attachment; filename="some_file_name.ext" 

Hope this helps

Une autre façon de le faire est en utilisant sprintf

$header = sprintf('Content-Disposition: attachment; filename="%s"',$name); 
header($header); 

Le sprintf est pas vraiment nécessaire, mais là pour vous montrer comment la variable serait placé dans la chaîne d'en-tête

+0

ni l'un ne fonctionnait – DonJuma

+0

Je fais cela pratiquement tous les jours, je vous assure que mes méthodes sont correct, plus que probable que votre variable est nulle ou incorrecte.S'il vous plaît montrer plus de code, aussi si c'était vous qui m'a voté, pouvez-vous s'il vous plaît retenir des réponses de vote qui répondent à votre question, si la réponse n'a pas fonctionné je vous assure une autre section de votre code. – RobertPitt

0

Pourquoi ne pas utiliser simplement " au lieu de ' comme:

header("Content-Disposition: attachment; filename=$name"); 
Questions connexes