ファイルが存在するかどうかを確認する必要がありますが、拡張子がわかりません。
IE私がしたい:
if(file_exists('./uploads/filename')):
// do something
endif;
もちろん、拡張子がないのでうまくいきません。拡張子はjpg、jpeg、png、gifのいずれかになります
ループを行わずにこれを行う方法のアイデアはありますか?
私は同じニーズを持っていて、globを使おうとしましたが、この関数は移植性がないようです:
http://php.net/manual/en/function.glob.php からのメモを参照してください:
注:この機能は、一部のシステム(古いSun OSなど)では使用できません。
注:GLOB_BRACEフラグは、Solarisなどの一部の非GNUシステムでは使用できません。
また、opendirよりも遅いので、以下を見てください: どちらが速いか:glob()またはopendir()
だから私は同じことをするスニペット関数を作りました:
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;
}
使用法 :
$file = resolve('/var/www/my-website/index');
echo $file; // will output /var/www/my-website/index.html (for example)
それが誰かを助けることができることを願っています、Ioan