[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как узнать расширение файла
Gabriel
в связи с проведением конкурса дико заинтересовал вопрос определения расширения файлоф.
пошел посмотреть в гугл что ето и с чем его едят, нашел вот таких 5ть спобов (меня как ламера впечетлило такой асортимент решения вопроса).
Свернутый текст
PHP
<?php
#Способ 1
function getExtension1($filename) { 
  return 
end(explode("."$filename)); 
}

#Способ 2
function getExtension2($filename) { 
    
$path_info pathinfo($filename); 
      return 
$path_info['extension']; 
}

#Способ 3
function getExtension3($filename) { 
    return 
substr($fileNamestrrpos($fileName'.') + 1); 
}

#Способ 4
function getExtension4($filename) { 
    return 
substr(strrchr($fileName'.'), 1); 
}

#Способ 5
function getExtension5($filename) { 
    return 
array_pop(explode("."$filename)); 
}

также вообшем в конце статейки написана средняя скорость работы данных функцый
Цитата

Что работает быстрее? Да, в прочем, на практике результаты выполнения и всех способов примерно одинаковые. Для подтверждения своих догадок провел небольшой тест, прогнав в цикле каждый из вариантов по 50000 раз:
Способ #1: 0.6777439 сек.
Способ #2: 0.5664740 сек.
Способ #3: 0.6604638 сек.
Способ #4: 0.4782789 сек.
Способ #5: 0.6564250 сек.

и вот тут я задался вопросами:
1) На самомли деле данные способы работают практически одинаково по скорости?
2) Какой способ могут посоветовать наши эксперты?
3) И какой из етих способов скажем так более "этичен" или ето дело вкуса?



Спустя 9 минут, 10 секунд (4.11.2009 - 15:22) glock18 написал(а):
1. вероятно, да. задача не такая большая, чтобы говорить о серьезной разнице в скорости между этими 5ю решениями.

2. лично я использовал 4. хотя сейчас бы скорее всего взял второй.
3. 2.

все варианты кроме 2 не учитывают отсутствие расширения.

Спустя 3 минуты, 58 секунд (4.11.2009 - 15:26) Gabriel написал(а):
glock18
Цитата
все варианты кроме 2 не учитывают отсутствие расширения.

под "отсутствие" имееш ввиду файл со стертым расширением?
ну второй чем хорош он может предоставить довольно широкую информацию начиная от папки в которой лежит файл заканчивая его расширением

Спустя 57 минут, 40 секунд (4.11.2009 - 16:24) glock18 написал(а):
Цитата
под "отсутствие" имееш ввиду файл со стертым расширением?

разумеется. файл без точки в имени далеко не нонсенс.

Спустя 4 часа, 3 минуты, 57 секунд (4.11.2009 - 20:28) kirik написал(а):
Когда делал задание по JPS конкурсу, там файловый броузер нужно было сделать. Я вот так приспособился расширение файла вытягивать:
PHP
function getExtension($filename)
{
    return ('.' . ($ext = pathinfo($filename, PATHINFO_EXTENSION)) == $filename) ? null : $ext;
}

Похож на второй, только корректно обрабатывает файлы без расширения или файлы типа .htaccess

Спустя 12 минут, 35 секунд (4.11.2009 - 20:40) Gabriel написал(а):
kirik
а обьяснить работу данного творения можно? я чегот немного не вьежаю в него

Спустя 7 дней, 8 часов, 12 минут, 49 секунд (12.11.2009 - 04:53) kirik написал(а):
Gabriel
А, да.. сори, пропустил тему.
Вот развернутый вариант:

function getExtension($filename)
{
$ext = pathinfo($filename, PATHINFO_EXTENSION);

// Если файл не имеет расширения (.htaccess, .htpasswd) - вернем null
if('.' . $ext == $filename)
{
return null;
}
else
{
return $ext;
}
}

Спустя 6 часов, 7 минут, 5 секунд (12.11.2009 - 11:00) twin написал(а):
Вообще если есть штатная функция для определения расширения, то корректнее и прозрачнее конечно пользоваться ей. Если написано EXTENSION, значит это EXTENSION и ничего иначе.
Это вот я до недавнего времени для определения времени последнего изменения файла пользовал огород типа:
$stat = stat('file.txt');
echo date("U", $stat[9]);
а оказалось что нужно внимательнее почитать мануал и решить это одной строчкой:
echo filemtime('file.txt');


Спустя 1 час, 8 минут, 4 секунды (12.11.2009 - 12:08) Gabriel написал(а):
описание из мануала.
Цитата
This function returns the time when the data blocks of a file were being written to, that is, the time when the content of the file was changed


перевод
Цитата
Эта функция возвращает время, когда блоки данных файла писались с, то есть то время, когда было изменено содержание файла

видать совсем какойто непонимаюший но эта функция какое отношение имеет к расширению?

Спустя 2 часа, 9 минут, 38 секунд (12.11.2009 - 14:18) twin написал(а):
Я для примера))) Можно одну и ту же задачу решать разными путями. Мне нужно было получить время последнего изменения файла, я нагородил огород. А оказалось что есть штатная функция.

Так же и с расширением. Есть специальная функция, pathinfo(), kirik показал как ей пользоваться. А все остальное - огород от незнания.

Спустя 8 минут, 33 секунды (12.11.2009 - 14:26) Gabriel написал(а):
twin
ну про pathinfo() мы уже както знаем smile.gif
дамс както криво я проснувшись твой пост прочитал sad.gif


_____________
one step, two steps HERE WE GO!!!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.