VicTHOR
@VicTHOR
(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻

Есть ли в php какая-то регистрозависимая проверка на изображение/файл?

Проверяю изображение функцией getimagesize(), но независимо от того, .jpg или .JPG написано, она изображение распознает, а мне нужно именно регистрозависимо проверять есть ли такой файл, т.к. на хостинге этот регистр влияет.
  • Вопрос задан
  • 400 просмотров
Пригласить эксперта
Ответы на вопрос 5
FanatPHP
@FanatPHP
Чебуратор тега РНР
getimagesize вообще никакого отношения не имеет к расширению файла. Оно может быть хоть .ThOr
И тем более не имеет отношения к регистру.

Перед тем как задавать вопрос, надо навести порядок у себя в голове.

Проверка изображения - это одна задача.
Проверка файла на существование - совсем другая.
При чем здесь регистр файла, в обоих случаях - вообще непонятно.

Поэтому надо собраться с мыслями, и сформулировать свою проблему человеческим языком - что проверяем, как конкретно проверяем, зачем проверяем, и что именно не получается.

Если задача - регистрозависимая проверка файла на существование, то её реализовывать не надо.
На каждом конкретном хосте проверка файла на существование будет работать так, как поддерживает хостовая ФС: если ФС регистрозависимая, то и поиск будет регистрозависимый. И наоборот.
Ответ написан
@BorisKorobkov Куратор тега PHP
Web developer
Регистрозависимо или регистронезависимо - зависит от ОС, а не от PHP.
Ответ написан
irishmann
@irishmann
Научись пользоваться дебаггером
Сначала проверяй файл на существование, потом твори с ним все что душе угодно.
Держи велосипед, и флаг в руки
<?php

$needle = 'iNdEx.pHp';//что ищем
$dir = 'путь к папке';//где ищем

//получаем массивом список вложенных файлов и папок
$files_array = scandir($dir);

//приводим элементы массива к нижнему регистру
foreach ($files_array as $file){
     $files[] = strtolower($file);
}
//приводим название искомого файла к нижнему регистру
$needle = strtolower($needle);

//ищем его в массиве
$exist = in_array($needle, $files);

echo 'Че нашел? ', $exist ? 'Ага' : 'Нет, пшел вон!';

Пардон, недоглядел насчёт регистра, спасибо затычке в каждой бочке, по сему исправляю велосипед.
<?php

$needle = 'iNdEx.pHp';//что ищем
$dir = 'путь к папке';//где ищем

//получаем массивом список вложенных файлов и папок
$files_array = scandir($dir);

//ищем его в массиве
$exist = in_array($needle, $files_array);

echo 'Че нашел? ', $exist ? 'Ага' : 'Нет, пшел вон!';
Ответ написан
denisbondar
@denisbondar
Python, PHP developer
Если я правильно понял вопрос, то автор вопроса желает использовать в качестве имени файла, допустим, image.jpg, но чтобы при этом это работало и для файла image.JPG и для IMAGE.JPG и для Image.Jpg.

Если я понял вопрос верно, то вопрос сам по себе некорректный, так как image.jpg и image.JPG - два совершенно разных файла, которым ничего не мешает находиться в одном каталоге.

UPD: Кажется, я ровно наоборот понял. Автору нужно проверять именно файл image.jpg, но чтобы при этом файл image.JPG не учитывался. Потому что у автора, по ходу, винда...

Тогда средствами РНР это, скорее всего, невозможно.

Да и не совсем понятно зачем? То есть на диске есть файл image.JPG, а в базе данных он именуется как image.jpg? Как такое вообще может быть?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы