当文件名中出现空格时,PHP Echo停止

时间:2014-03-20 14:36:16

标签: php mysql pdf

我正在尝试使用以下代码显示本地存储在浏览器中的pdf文件:

<p><a href=<?php
$sql = "select title from tasks where taskPK='".$_SESSION['task']."'";
$res = $db->query($sql);
if (!$res) {
    throw new Exception("Database Error [{$db->errno}] {$db->error}");
}
while($row = $res->fetch_assoc()){
    $rad= $row['title'];
echo ("files/".$id."/".$rad.".pdf"); }?> > See PDF </a> </p>

这应该进入正确的文件夹并获取文件然后显示它。但我的问题是,如果文件的名称有一个空格,例如“peter pan.pdf” 然后它将无法正常工作。 URL应该是localhost / upload / files / 9 / Peter%20Pan.pdf 但这不会发生。 URL是localhost / upload / filer / 9 / Peter 当空间命中且文件未显示时,它会停止。

但如果文件名与a连接 - 就像这样:“Peter-Pan.pdf”它可以工作。 然后URL变为localhost / upload / filer / 9 / Peter-Pan.pdf PDF显示。

问题是什么?对不起,如果它有点乱。

$ id是URL中的用户

问题应该在这里,但我不能说出来:

echo ("files/".$id."/".$rad.".pdf"); }?> > See PDF </a> </p>

1 个答案:

答案 0 :(得分:1)

空白区域是非法的URL字符。使用urlencode清除$rad

 $rad = urlencode($row['title']);

此致

编辑:

$rad = rawurlencode($row['title']);

这是对rawurlencode

的引用