# WP_CHECK_FILETYPE() │ WP 2.0.4
Функция wp_check_filetype() позволяет определить тип файла по его имени. Также можно задать массив расширений файлов, если это необходимо.
### Используется в:
- wp_check_filetype_and_ext()
- wp_upload_bits()
### Время работы:
- 1 раз — 0.0011148 сек (очень медленно)
- 50000 раз — 1.85 сек (быстро)
### Версия PHP и WordPress:
- PHP 7.3.12
- WP 5.4.1
### Нет хуков.
## Возвращаемое значение
Функция возвращает массив, который содержит следующие значения:
- ext — расширение файла.
- type — MIME-тип файла.
## Применение
```php
wp_check_filetype( $filename, $mimes );
Параметры:
$filename(строка) (обязательный) — имя файла или путь к файлу.$mimes(массив строк|null) — массив допустимых MIME-типов, ключи которого являются регулярными выражениями для расширений файлов. По умолчанию: результатget_allowed_mime_types().
Примеры
Пример 1: Определение типа файла
$file = dirname(__FILE__) . '/image.jpg';
$filetype = wp_check_filetype( $file );
echo $filetype['ext']; // вывод: jpg
echo $filetype['type']; // вывод: image/jpeg
Пример 2: Проверка разрешённых расширений файла
Чтобы проверить, разрешено ли использовать файл, получим его данные (это не проверяет реальный MIME-тип файла):
$filetype = wp_check_filetype( 'image.jpg' );
if( $filetype['ext'] ) {
echo 'Файл с расширением ' . $filetype['ext'] . ' разрешён';
} else {
echo 'Файл с расширением ' . $filetype['ext'] . ' запрещён';
}
Пример 3: Указание разрешённых типов файлов и проверка
Давайте зададим разрешённые типы файлов в массиве и проверим расширение файла:
$mimes = array(
'gif' => 'image/gif',
'png' => 'image/png',
'jpg|jpeg|jpe' => 'image/jpeg'
);
$file = 'image.bmp';
$filetype = wp_check_filetype( $file, $mimes );
if( $filetype['ext'] ) {
echo 'разрешено';
} else {
echo 'заблокировано';
}
Изменения
- Версия 2.0.4 — функция была введена.
Код функции
function wp_check_filetype( $filename, $mimes = null ) {
if ( empty( $mimes ) ) {
$mimes = get_allowed_mime_types();
}
$type = false;
$ext = false;
foreach ( $mimes as $ext_preg => $mime_match ) {
$ext_preg = '!.(' . $ext_preg . ')$!i';
if ( preg_match( $ext_preg, $filename, $ext_matches ) ) {
$type = $mime_match;
$ext = $ext_matches[1];
break;
}
}
return compact( 'ext', 'type' );
}
Связанные функции
download_url()media_handle_sideload()media_handle_upload()media_sideload_image()size_format()wp_check_filetype_and_ext()wp_convert_hr_to_bytes()wp_get_upload_dir()wp_handle_sideload()wp_handle_upload()wp_max_upload_size()wp_upload_bits()