Je rentre de scandir, mais il contient "."
et ".."
et je ne le veux pas.
Mon code:
$indir = scandir('../pages');
$fileextensions = array(".", "php", "html", "htm", "shtml");
$replaceextensions = str_replace($fileextensions, "", $indir);
Je suis en train de remplacer les extensions de fichier par une chaîne, ce qui fait que [0] et [1] apparaissent vides, mais il s'agit de "."
et de ".."
array(4) {
[0]=>
string(0) ""
[1]=>
string(0) ""
[2]=>
string(4) "test"
[3]=>
string(4) "home"
}
Comment pourrais-je supprimer les "."
et ".."
du tableau?
Vous pouvez utiliser array_filter .
$indir = array_filter(scandir('../pages'), function($item) {
return !is_dir('../pages/' . $item);
});
Notez que ceci filtre tous les répertoires et ne laisse que les fichiers et les liens symboliques. Si vous voulez vraiment n'exclure que les fichiers (et les répertoires) commençant par .
, vous pouvez faire quelque chose comme:
$indir = array_filter(scandir('../pages'), function($item) {
return $item[0] !== '.';
});
Le moyen le plus rapide de supprimer les points sous forme de fichiers dans scandir
$files = array_slice(scandir('/path/to/directory/'), 2);
Depuis le PHP Manual
array_diff
fera ce que vous cherchez:
$indir = scandir('../pages');
$fileextensions = array(".", "php", "html", "htm", "shtml");
$indir = array_diff($indir, array('.', '..'));
$replaceextensions = str_replace($fileextensions, "", $indir);
Je suis conscient que erknrio a fourni une réponse à cela, mais voici une méthode plus simple pour obtenir un tableau de fichiers sans répertoires (modifié pour être plus efficace):
$dirPath = 'dashboard';
$dir = scandir($dirPath);
foreach($dir as $index => &$item)
{
if(is_dir($dirPath. '/' . $item))
{
unset($dir[$index]);
}
}
$dir = array_values($dir);
Vous pouvez utiliser cet extrait. Il ne retourne que les fichiers dans le répertoire:
function only_files($dir_element) {
if (!is_dir($dir_element)) {
return $dir_element;
}
}
function givemefiles($dir) {
$scanned_dir = scandir($dir);
return array_filter($scanned_dir, "only_files");
}
$dir_path = '../pages';
givemefiles($dir_path);
echo "<pre>";
var_dump($scanned_dir);
echo "</pre>";
utilisez simplement preg_replace pour supprimer tout type de fichier caché du répertoire
$files = array(".", "..", "html", ".~html", "shtml");
$newfiles = preg_grep('/^([^.])/', scandir($files));