+174
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
// get extension and name
$ar = explode('.', $result['name']);
if (count($ar) == 2)
{
$fName = $ar[0];
$fExt = $ar[1];
}
elseif (count($ar) < 2)
{
$fName = $result['name'];
$fExt = '';
}
else
{
$fName = $ar[0];
for ($i = 1; $i < count($ar); $i++)
{
$fName .= '.' . $ar[$i];
}
$fExt = $ar[count($ar) - 1];
}
Вот таким вот образом в проекте вычисляется расширение файла
PS. Для тех кто в танке:
method1(using internal function):
$extension = pathinfo($filename, PATHINFO_EXTENSION);
method2(coder know about 'explode' function)
$ar = explode(".", $filename); $extension = count($ar)>1 ? end($ar) : "";
method3(coder know about 'strchr', 'strrchr' and 'substr' functions)
$extension = strrchr(".", $filename ) == FALSE ? "" : substr(strrchr(".", $filename));
Запостил:
mykola,
19 Августа 2010
P.S. а вообще затея вычислением расширения по-моему лишняя, где оно пригодиться то может..
ну например проверка при загрузке на определенные расширения файлов
для юниксоидов это просто кусочек имени, так что серьезно что-то фильтровать по расширению -- глупо имхо
Потому что, если мы зауплоудим, скажем, гифку, но без расширения - какой контент-тип тогда слать броузеру, отдавая ее?
если я что-то не понимаю, пожалуйста, просветите
мы же на своей стороне может проверить ее заголовок
например гифы начинаются как GIF89, зипы как PK итд
ну для надежности можно и расширение конечно
ну этим может заняться и fileinfo
для надежности. Потому что на вход и броузер может отослать какой угодно миме. Тот же image/pjpeg
Сортировать одномерный массив пузырьком будете, а считывать содержимое файла в строку - в цикле?
И да, забыли метод 4 - для поклонников регэкспов:
а скорость сейчас замерим...
... а замеры показывают, что pathinfo зря я не использовал - она даже быстрее (30 микросекунд) выражений со строковыми функциями. а метод (2) с разделением строки на массив - как и ожидалось, наиболее медленный - 90 микросекунд. метод 3 - 80 микросекунд
вообще я думал, что pathinfo лезет в сам файл, потому будет медленен
что ты школота позорная, не умеющая читать даже мануалов. Как же ты всех тут заебал своими тупыми высерами, когда же ты заткнешь хлебало, из которого воняет нубством
господа, пора сливать долбоеба макаку, походу это второй вебкилл детектед
Я заморочился и замерял скорость, мои результаты несколько иные:
Тестовая строка 'nbpro.ject/pri.vate/private.xml'.
Суть не в производительности, но читаемости. pathinfo все же имхо наиболее легко воспринимается.