Появилась необходимость в написании функции, которая на вход получает директорию диска (например C:\). А на выходе выводит название диска.
Единственное что удалось найти в интернете, не работает.
if( preg_match( '~Volumename : (.*)~i', `fsutil fsinfo volumeinfo C:\\`, $matches ) ) {
echo $matches[1];
}
Ответ из англоязычного СО здесь
// Returns null if unable to determine drive letter (such as on a *nix box)
function driveLetter($path)
{
return (preg_match('/^[A-Z]:/i', $path = realpath($path))) ? $path[0] : null;
}
// To find drive letter of current file
echo "Drive letter is: ", driveLetter(__FILE__);
Отвечу сам на свой вопрос. Нашел на англоязычной версии данного сайта. Выводит всю информацию о дисках, нужное легко выбрать. Что самое главное, работает под windows.
<?php
$fso = new COM('Scripting.FileSystemObject');
$D = $fso->Drives;
$type = array("Unknown","Removable","Fixed","Network","CD-ROM","RAM Disk");
foreach($D as $d ){
$dO = $fso->GetDrive($d);
$s = "";
if($dO->DriveType == 3){
$n = $dO->Sharename;
}else if($dO->IsReady){
$n = $dO->VolumeName;
$s = file_size($dO->FreeSpace) . " free of: " . file_size($dO->TotalSize);
}else{
$n = "[Drive not ready]";
}
echo "Drive " . $dO->DriveLetter . ": - " . $type[$dO->DriveType] . " - " . $n . " - " . $s . "<br>";
}
function file_size($size)
{
$filesizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $filesizename[$i] : '0 Bytes';
}
?>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я использую QNetworkAccessManager, и мне нужно сделать следующее: отправить post запрос, так чтобы следущий код на php мог показать мои аргументы:
Пытаюсь сделать пагинацию с помощью встроенной функции the_posts_pagination(); Но она не работает в моем примере