Удаление файлов из массива по заданной маске расширения массива?

Всем доброго дня. Давно не писал на PHP, проекту более 10 лет, вот занялся кое что переделать, есть прстая форма мультизагрузки, есть массив расширений, запрещенных к загрузке. Задача, как на основе этого массива с расширениями, получить полные имена файлов и удалить их из общего массива? Накидал пример, что смог, но что-то не очень:

$arr = $_FILES['xtt']['name'];
$deny = array('php');
foreach ($arr as $file) {
foreach ($deny as $ext) {
    echo 'файлы: '.$file.'<br>';
    echo 'расширения: '.pathinfo($file, PATHINFO_EXTENSION).'<br><br>';
if (pathinfo($file, PATHINFO_EXTENSION) == $ext) {
$del = pathinfo($file, PATHINFO_FILENAME).'.'.pathinfo($file, PATHINFO_EXTENSION);
unset($arr[$del]);
}}}

Поделитесь примером, как это лучше реализовать, имеено по задаче? Заранее всем спасибо!


Ответы (1 шт):

Автор решения: AlexPebody

Решение:

$denyftype = array('htm', 'html', 'shtml', 'xml', 'txt', 'sh', 'bash','pl', 'py', 'pyt', 'css', 'js', 'asp', 'jsp', 'cgi', 'php', 'vbs', 'cmd', 'bat', 'exe', 'dll', 'vxd', 'reg', 'ajax', 'script', 'htaccess', 'htpasswd');

foreach ($_FILES['xtt']['name'] as $key => $name)
{
  $tmp_name = $_FILES['xtt']['tmp_name'][$key];
  $path_parts = pathinfo($_FILES['xtt']['name'][$key]);

   if(in_array($path_parts['extension'], $denyftype))
    {
      if(is_file($tmp_name))
      {
        if(unlink($tmp_name))
        {
          $errors[] = $_FILES['xtt']['name'][$key];
          unset($_FILES['xtt']['name'][$key],
                $_FILES['xtt']['type'][$key],
                $_FILES['xtt']['tmp_name'][$key],
                $_FILES['xtt']['error'][$key],
                $_FILES['xtt']['size'][$key]);
        }
      }
    }
}

//echo '<b>OUT</b><br>';
//print_r($_FILES);

echo 'Файлы '. join(', ',$errors). ' не были загружены, тк запрещены.';
→ Ссылка