Tôi đã có nhu cầu tương tự, và cố gắng sử dụng glob nhưng chức năng này dường như không được cầm tay:
Xem chú thích từ http://php.net/manual/en/function.glob.php:
Lưu ý: Chức năng này không khả dụng trên một số hệ thống (ví dụ: Sun OS cũ).
Lưu ý: Cờ GLOB_BRACE không khả dụng trên một số hệ thống không phải GNU, như Solaris.
Nó cũng hơn chậm hơn so với opendir, hãy xem tại địa chỉ: Which is faster: glob() or opendir()
Vì vậy, tôi đã thực hiện một chức năng đoạn mà làm điều tương tự:
function resolve($name) {
// reads informations over the path
$info = pathinfo($name);
if (!empty($info['extension'])) {
// if the file already contains an extension returns it
return $name;
}
$filename = $info['filename'];
$len = strlen($filename);
// open the folder
$dh = opendir($info['dirname']);
if (!$dh) {
return false;
}
// scan each file in the folder
while (($file = readdir($dh)) !== false) {
if (strncmp($file, $filename, $len) === 0) {
if (strlen($name) > $len) {
// if name contains a directory part
$name = substr($name, 0, strlen($name) - $len) . $file;
} else {
// if the name is at the path root
$name = $file;
}
closedir($dh);
return $name;
}
}
// file not found
closedir($dh);
return false;
}
Cách sử dụng:
$file = resolve('/var/www/my-website/index');
echo $file; // will output /var/www/my-website/index.html (for example)
Hy vọng rằng có thể giúp ai đó, Ioan
Nguồn
2015-04-06 08:51:44
'glob' cũng có thể được sử dụng với một cú đúp mở rộng như bash:' glob ("./ uploads/filename. {Jpg, jpeg, png, gif}", GLOB_BRACE) '. – Gumbo
@pekka: Cảm ơn rất nhiều. –