Получить расширение из имени файла, такого как переменная

202
6

Возможный дубликат:
Как извлечь расширение файла в PHP?



У меня есть переменная $filename="filename.ext" или $filename="filena.m.e.ext" или так далее. Как я могу извлечь расширение (здесь ext) из переменной /string? Переменная может измениться или может иметь более одной точки. В этом случае я хочу получить деталь после последней точки.

спросил(а) 2021-01-28T01:20:22+03:00 3 месяца, 1 неделя назад
1
Решение
327

см. ответ :

$ext = pathinfo($filename, PATHINFO_EXTENSION);

ответил(а) 2021-01-28T01:20:22+03:00 3 месяца, 1 неделя назад
98

вы можете определить такую ​​функцию:


function get_file_extension($filename)
{
/*
* "." for extension should be available and not be the first character
* so position should not be false or 0.
*/
$lastDotPos = strrpos($fileName, '.');
if ( !$lastDotPos ) return false;
return substr($fileName, $lastDotPos+1);
}

или вы можете использовать объект Spl_FileInfo, встроенный в PHP

ответил(а) 2021-01-28T01:20:22+03:00 3 месяца, 1 неделя назад
87

Вы можете использовать запрос информации о пути.


$info = pathinfo($file);

где


$info['extension']

содержит расширение

ответил(а) 2021-01-28T01:20:22+03:00 3 месяца, 1 неделя назад
88

Вы хотите использовать регулярное выражение:


preg_match('/\.([^\.]+)$/', $filename);

Вы можете протестировать его здесь, чтобы узнать, доставит ли он вам результат, который вы хотите получить.

ответил(а) 2021-01-28T01:20:22+03:00 3 месяца, 1 неделя назад
76

Существует много способов сделать это, например, с помощью explode() или с preg_match и другими.


Но способ, которым я это делаю, с pathinfo:


$path_info = pathinfo($filename);

echo $path_info['extension'], "\n";

ответил(а) 2021-01-28T01:20:22+03:00 3 месяца, 1 неделя назад
44

Вы можете взорвать строку, используя., затем взять последний элемент массива:


$filename = "file.m.e.ext";
$filenameitems = explode(".", $filename);

echo $filenameitems[count($filenameitems) - 1]; // .ext
// or echo $filenameitem[-1];

ответил(а) 2021-01-28T01:20:22+03:00 3 месяца, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема