urldecode()函数不解码空格+

时间:2012-01-05 19:47:29

标签: php urlencode urldecode

我正在处理表单以提交要删除的文件。由于许多这些文件名都有空格元素,我使用了urlencode()函数。但是,当我urldecode()时,+符号没有被解码为空格&发生错误。我做错了什么?

以下是来自delete.php的代码,其中包含一些解码变体:

<?php 

$file= 'test image.jpg';

echo "<form method=\"post\" name=\"deleteFile\" action=\"delete.php?delete=true\">          
<input type=\"hidden\" name=\"FileToDelete\" value=".urlencode($file)." >
<input class=\"delete_button\" type=\"submit\" value=\"X\"></div></form>";

if(isset($_GET['delete']) && $_GET['delete']=='true') {   
echo $_POST[urldecode("FileToDelete")].' #1'.'<br>';
echo $_POST[urldecode('FileToDelete')].' #2'.'<br>';
echo $_POST[htmlspecialchars(urldecode('FileToDelete'))].' #3'.'<br>';
}

?>

1 个答案:

答案 0 :(得分:0)

您没有解码文件名,而是文本FileToDelete。我的猜测是你要做以下事情:

if(isset($_GET['delete']) && $_GET['delete']=='true') {   
    $decodedFilename = urldecode($_POST['FileToDelete']);

    echo $decodedFilename.' #1'.'<br>';
    echo $decodedFilename.' #2'.'<br>';
    echo htmlspecialchars($decodedFilename).' #3'.'<br>';
}