Je veux lire une liste des noms de fichiers dans un dossier d'une page Web à l'aide de php ..__
La manière la plus simple et la plus amusante (imo) est glob
foreach (glob("*.*") as $filename) {
echo $filename."<br />";
}
Mais la méthode standard consiste à utiliser les fonctions du répertoire .
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
echo "filename: .".$file."<br />";
}
closedir($dh);
}
}
Il existe également les méthodes SPL DirectoryIterator . Si tu es intéressé
C'est ce que j'aime faire:
$files = array_values(array_filter(scandir($path), function($file) use ($path) {
return !is_dir($path . '/' . $file);
}));
foreach($files as $file){
echo $file;
}
Il y a cette fonction scandir ():
$dir = 'dir';
$files = scandir($dir, 0);
for($i = 2; $i < count($files); $i++)
print $files[$i]."<br>";
Si vous avez des problèmes pour accéder au chemin, vous devez peut-être ajouter ceci:
$root = $_SERVER['DOCUMENT_ROOT'];
$path = "/cv/";
// Open the folder
$dir_handle = @opendir($root . $path) or die("Unable to open $path");
Il y a un glob. Dans cette page Web, il y a un bon article pour lister les fichiers de manière très simple:
Comment lire une liste de fichiers d'un dossier en utilisant PHP
Vérifier dans de nombreux dossiers:
Folder_1 et folder_2 sont le nom des dossiers dans lesquels nous devons sélectionner des fichiers.
Le format $ est le format requis.
<?php
$arr = array("folder_1","folder_2");
$format = ".csv";
for($x=0;$x<count($arr);$x++){
$mm = $arr[$x];
foreach (glob("$mm/*$format") as $filename) {
echo "$filename size " . filesize($filename) . "<br>";
}
}
?>
Vous pouvez utiliser les fonctions de répertoire standard
$dir = opendir('/tmp');
while ($file = readdir($dir)) {
if ($file == '.' || $file == '..') {
continue;
}
echo $file;
}
closedir($dir);
Il existe également un moyen très simple de le faire à l'aide de la classe RecursiveTreeIterator
, à laquelle il est répondu ici: https://stackoverflow.com/a/37548504/2032235
<html>
<head>
<title>Names</title>
</head>
<body style="background-color:powderblue;">
<form method='post' action='alex.php'>
<input type='text' name='name'>
<input type='submit' value='name'>
</form>
Enter Name:
<?php
if($_POST)
{
$Name = $_POST['name'];
$count = 0;
$fh=fopen("alex.txt",'a+') or die("failed to create");
while(!feof($fh))
{
$line = chop(fgets($fh));
if($line==$Name && $line!="")
$count=1;
}
if($count==0 && $Name!="")
{
fwrite($fh, "\r\n$Name");
}
else if($count!=0 && $line!="")
{
echo '<font color="red">'.$Name.', the name you entered is already in the list.</font><br><br>';
}
$count=0;
fseek($fh, 0);
while(!feof($fh))
{
$a = chop(fgets($fh));
echo $a.'<br>';
$count++;
}
if($count<=1)
echo '<br>There are no names in the list<br>';
fclose($fh);
}
?>
</body>
</html>