2014-09-03 66 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']);