2014-09-03 65 views
1

下面的代码是不是

<?php 
$deletinglist = addQuotes($_POST['delimglist']); 
$deletelist = array($deletinglist); 

foreach ($deletelist as $filename) { 
unlink(dirname(__FILE__) . "/uploads/" . $filename); 
} 
function addQuotes($string) { 
    return '"'. implode('","', explode(',', $string)) .'"'; 
} 
?> 

这里$_POST['delimglist'] = "C0d49a7de7b635477125ffffa8df7b932.jpg,C0d49a7de7b635477125ffffa8df7b934.jpg,C0d49a7de7b635477125ffffa8df7b935.jpg";

如果我使用$deletelist = array("C0d49a7de7b635477125ffffa8df7b932.jpg","C0d49a7de7b635477125ffffa8df7b934.jpg","C0d49a7de7b635477125ffffa8df7b935.jpg");

其工作正常,但如果我用$deletelist = array($deletinglist);它不工作。

试图用像上面

Warning: unlink(/home/...somepath.../uploads/"C0d49a7de7b635477125ffffa8df7b932.jpg","C0d49a7de7b635477125ffffa8df7b934.jpg","C0d49a7de7b635477125ffffa8df7b935.jpg"): No such file or directory in /home/...somepath.../deletefile.php on line 9 

回答

1

我不确定为什么要在文件名周围添加引号? 代码应该是如此简单:

<?php 
$deletelist = explode(',', $_POST['delimglist']); 

foreach ($deletelist as $filename) { 
    unlink(dirname(__FILE__) . "/uploads/" . $filename); 
} 
?> 
1

所有你正在做的是把$deleteList到一个数组作为一个单一的元素,当我得到以下警告。你想用','分隔值。使用$deleteList = explode(',', $deleteList);

1

以下是不一样的东西:

$arr1 = Array("a", "b", "c"); 

$str = "a,b,c"; 
$arr2 = Array($str); 

在第一个例子中的逗号语言结构:将它们写一个变量里面呢并不意味着他们神奇地获得语言结构能力;在字符串内部,它们只是字符。

同样,这样的:

$str = "a,b,c"; 
foo($str); 

是一样的:

foo("a,b,c"); 

,而不是这样的:

foo("a", "b", "c"); 

你将不得不使用明确分割了功能字符串$_POST['delimglist']

$deleteList = explode(',', $_POST['delimglist']);