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

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

Проверяю изображение функцией getimagesize(), но независимо от того, .jpg или .JPG написано, она изображение распознает, а мне нужно именно регистрозависимо проверять есть ли такой файл, т.к. на хостинге этот регистр влияет.
  • Вопрос задан
  • 280 просмотров
Пригласить эксперта
Ответы на вопрос 5
@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? Как такое вообще может быть?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Лучшие люди Иваново
от 40 000 до 90 000 руб.
N1.RU Новосибирск
от 100 000 руб.
Living Core Казань
от 50 000 руб.
21 сент. 2019, в 21:51
80000 руб./за проект
21 сент. 2019, в 21:07
700 руб./в час