Как узнать расширение файла?

Статус
В этой теме нельзя размещать новые ответы.

grey109

Новичок
Как узнать расширение файла?

Допустим, в переменной filename лежит имя файла "zxc.exe".

Вопрос: как узнать расширение этого файла? Если ли для этого стандартная функция?
 

RomikChef

Guest
нет, но его легко узнать с помощью двух встроенных - [m]strrpos[/m] и [m]substr[/m]
 

grey109

Новичок
А если у файла расширение не из 3-х букв? А если двойное расширение? ИМХО это будет не очень красиво.

Может, кто подскажет как это сделать с помощью регулярных выражений?
 

Demiurg

Guest
Не надо регулярных выражений. Надо найти последнюю точку и все, что после неё.
 

Demiurg

Guest
split заменить на explode. и есть лучший метод. надо только ответы почитать.

ps Дmитрий, ты же вроде обещал больше никому не помогать :)
 

tony2001

TeaM PHPClub
Дмитрий:
это неправильное решение.
правильное:
PHP:
$dot_position = strrpos($filename,'.')+1; 
$extension = substr($filename,$dot_position,strlen($filename) - $dot_position);

// менее читабельно, но тоже рабочее:
$extension = substr($filename,-(strlen($filename) - strrpos($filename,'.') - 1));
 

tony2001

TeaM PHPClub
Дмитрий:
я очень тебя прошу: думай перед тем, как писать в форум.
а лучше - попробуй уменьшить поток своих откровений в форуме.

успокойся, твои массивы и split тоже работают.
только МЕДЛЕННО.
такие ответы нельзя давать новичкам - они воспримут их как руководство к действию.
 

ForJest

- свежая кровь
Если уж зашла речь о скорости ;).
PHP:
<?php
  $filename = "this.is.the.file.ext";
  echo substr($filename, strrpos($filename, ".")+1);
?>
А решение через [m]explode[/m] и [m]end[/m] тоже имеет право быть. И оно более гибкое - вдруг понадобится потом узнать не последнее расширение, а допустим 2 последних? Или есть ли расширение вообще?
 

tony2001

TeaM PHPClub
ForJest:
о, гут.
без strlen даже еще лучше.

>И оно более гибкое - вдруг понадобится потом узнать не
>последнее расширение, а допустим 2 последних?
ну давайте напишем целый класс для этого.
который будет все-что-угодно делать очень гибко.

>Или есть ли расширение вообще?
вот для этого можно результат strrpos отдельно проверять.
 

RomikChef

Guest
"Два расширения" не бывает в природе.
расширение всегда одно.
Если кому-то взбредет в голову узнать, что лежит в конце имени файла - это отдельная задача.

есть ли расширение вообще, с помощью explode узнать ничуть не удобнее, чем через strrpos.

Работа с массивами в PHP медленная.
Надо учиться писать программы правильно.
и учить.

ForJest. Такая свежая кровь клубу не нужна.
 

tony2001

TeaM PHPClub
>Я не трачу ресурсов на контролирование своих эмоций.
в таком случае я считаю возможным не тратить своих ресурсов на раздумывание - удалять или нет твои ответы.
 

confguru

ExAdmin
Команда форума
Не фиг спорить...

[m]pathinfo[/m]

Никто не дал правильный ответ :-Ь
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху