PHPのfile_existsは大文字小文字の区別があります。そのため大文字小文字を区別せずにファイルの存在をチェックすることができません。
globでファイル一覧を取ってから調べる、という方法もありますが、フォルダ内の画像数が多い場合には危険です。
ただ、globだと [aA]
のようにしてどちらかの文字にマッチする、という条件での検索を行うことができますのでこれを利用することで大文字小文字の区別を行わずにファイルの有無をチェックすることができます。
例えば test.png
というファイルを探したい場合は [tT][eE][sS][tT].[pP][nN][gG]
で検索すれば良いわけです。
下記のような関数になります。
function ignoreCaseFileExists(string $fileName)
{
$upper = strtoupper($fileName);
$lower = strtolower($fileName);
$searchFileName = '';
$length = strlen($fileName);
for ($i = 0; $i < $length; $i++) {
if ($upper[$i] === $lower[$i]) {
$searchFileName .= $upper[$i];
} else {
$searchFileName .= "[{$upper[$i]}{$lower[$i]}]";
}
}
$found = glob($fileName);
if ($found) {
return $found[0]
}
return null;
}
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント