为什么以下不起作用。
$directory = './';
exec('ls -loh ' . $directory, $directory_list);
echo '<ul>';
foreach ($directory_list as $file) {
$x = explode(' ', $file);
echo '<li>' . $x[3] . '</li>';
}
echo '</ul>';
如果我没有爆炸,我只是echo '<li>'.$file.'</li>';
那么我得到一个像这样的字符串
drwxr-xr-x 10 user 4.0K Sep 8 16:06 _test
我试图只获得大小而不是整个字符串。我做错了什么。
答案 0 :(得分:3)
您也可以使用PHP:
$files = glob("./*");
$files = array_combine($files, array_map("filesize", $files));
它为您提供了一个很好的关联数组,如:
[./curl.php] => 1499
[./db.php] => 10267
答案 1 :(得分:1)
如果您只想获取文件的大小,请尝试以下操作:
exec("ls -sh ./", $results);
foreach(array_slice($results,1,count($results)) as $file) {
echo $file . "\n";
}
这是我的输出:
4.0K 24
0 BookingTest.php
0 date
4.0K date.php
4.0K exec2.php
4.0K somefile
4.0K file.php
4.0K file
答案 2 :(得分:0)
我不会说你做错了什么 - 你的做法完全可以接受。但是,如果您想避免explode()
,可以执行以下操作:
$directory = './';
exec('ls -loh | awk \'{print $4}\'' . $directory, $directory_list);
echo '<ul>';
foreach ($directory_list as $file_size) {
echo '<li>' . $file_size . '</li>';
}
echo '</ul>';