Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 23.10.2003, 23:52
Wave вне форума Посмотреть профиль Отправить личное сообщение для Wave Посетить домашнюю страницу Wave Найти все сообщения от Wave
  № 21  
Wave
еретик

Регистрация: Jan 2001
Адрес: Харьков, Украина
Сообщений: 919
PHP код:
function fileExt($file){
    return ((
$pos strrpos($file".")) !== false) ? substr($file$pos-strlen($file)+1) : $pos;

Не без изъянов, но для внутреннего использования подойдет вполне.
__________________
These unidentyfied flying objects, that appeared to display unique characteristics, such as the speed, the record maneuverity and so on, must be studied in the interest of mankind

Старый 24.10.2003, 05:50
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 22  
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
strrpos($file, ".")) !== false

!strrpos($file, "."))
все же будет правильнее. например, для .htaccess будет возвращено значение ноль. то есть файл, у которого нет имени не будет иметь расширения. имхо, ну и если фолс то возвращать можно просто 0. типа быстрее
__________________
а мы летим орбитами путями не избитыми...

Старый 24.10.2003, 06:37
Wave вне форума Посмотреть профиль Отправить личное сообщение для Wave Посетить домашнюю страницу Wave Найти все сообщения от Wave
  № 23  
Wave
еретик

Регистрация: Jan 2001
Адрес: Харьков, Украина
Сообщений: 919
Для файла ".htaccess" функция должна возвратить его расширение "htaccess".
Это правильно.
__________________
These unidentyfied flying objects, that appeared to display unique characteristics, such as the speed, the record maneuverity and so on, must be studied in the interest of mankind

Старый 24.10.2003, 08:49
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 24  
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
Вейв, ты че?
ты ж сам ставишь !== false
то есть не эдентично false. а false будет возвращено тока, если точки в полном имени файла нет. если с точки начинается, то будет возвращен 0, величина равная, но нулю не идентичная по причина несоответвия типов. тогда надо ставить !=
__________________
а мы летим орбитами путями не избитыми...

Старый 24.10.2003, 09:10
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 25  
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
пока готовил кофе типа идея пришла
поставить !=
тогда при имени типа name.ext
возвращается ext
при типа .ext
возвращается ext
а вот если name, то есть расширение отсутсвует возвращать NULL.
и еще щас...
допустим файл name.ext
$pos = strrpos($file, ".")
будет 4
$pos-strlen($file)+1
будет 4-9 = -5
если не ошибаюсь.. не ошибаюсь, возвращено будет
e.ext
поскольку -1 будет t как последний символ. то есть плюс один нафик.
тогда при каком нить d.name.
$pos = strrpos($file, ".")
возвращено будет
6
$pos-strlen($file)
6-6 получаем 0.

и полное различие результатов есть!
итак, вывод:
ext - расширение вот вам
NULL - расширение и точка отсутсвуют или имени файла не существует
0 - или расширение "0" или после точки ниче нет
__________________
а мы летим орбитами путями не избитыми...

Старый 24.10.2003, 09:29
Wave вне форума Посмотреть профиль Отправить личное сообщение для Wave Посетить домашнюю страницу Wave Найти все сообщения от Wave
  № 26  
Wave
еретик

Регистрация: Jan 2001
Адрес: Харьков, Украина
Сообщений: 919
Цитата:
Вейв, ты че?
ты ж сам ставишь !== false
то есть не эдентично false. а false будет возвращено тока, если точки в полном имени файла нет. если с точки начинается, то будет возвращен 0, величина равная, но нулю не идентичная по причина несоответвия типов. тогда надо ставить !=
Да, я осознанно ставлю !== false.
При таком раскладе, если точки в имени файла нет, будет возвращено false, если с точки начинается, будет возвращено все, что после точки.


Цитата:
пока готовил кофе типа идея пришла
поставить !=
тогда при имени типа name.ext
возвращается ext
при типа .ext
возвращается ext
а вот если name, то есть расширение отсутсвует возвращать NULL.
функция, которую я привел в качестве примера возвращает расширение в первых двух случаях и false в третьем.

Цитата:
и еще щас...
допустим файл name.ext
$pos = strrpos($file, ".")
будет 4
$pos-strlen($file)+1
будет 4-9 = -5
если не ошибаюсь.. не ошибаюсь, возвращено будет
e.ext
Ошибаешься.

$pos-strlen($file)+1 = 4-8+1 = -3

Возвращено будет 'ext'.

Цитата:
поскольку -1 будет t как последний символ. то есть плюс один нафик.
тогда при каком нить d.name.
$pos = strrpos($file, ".")
возвращено будет
6
$pos-strlen($file)
6-6 получаем 0.
Опять ты в трех соснах заблудился.

Итак, что мы имеем:

Я - написал маленькую, изящную, корректно выполняющуюся функцию.
Ты - путаешься в элементарных математических рассчетах.

Думать надо, думать несколько раз, прежде чем критиковать что-либо.
__________________
These unidentyfied flying objects, that appeared to display unique characteristics, such as the speed, the record maneuverity and so on, must be studied in the interest of mankind

Старый 24.10.2003, 11:24
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 27  
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
Я понимаю, что не спал сутки и все же. думать не могу, решил пробовать:
при "name."
функция возвращает name.
в остальном верно, я гоню.
__________________
а мы летим орбитами путями не избитыми...

Старый 26.10.2003, 14:21
Pietrovich вне форума Посмотреть профиль Отправить личное сообщение для Pietrovich Найти все сообщения от Pietrovich
  № 28  
Pietrovich
 
Аватар для Pietrovich

Регистрация: Apr 2001
Адрес: Z-town
Сообщений: 677
Отправить сообщение для Pietrovich с помощью ICQ
есть вопрос.
возможно он туп до безобразия, но я тек и не встретил упоминания про
pathinfo(); [Returns information about a file path (PHP 4 >= 4.0.3) ]

или тут специально тренируются обходиться без core feautures?

__________________
ушел в ruFlash...

Старый 27.10.2003, 12:16
mishinaelle вне форума Посмотреть профиль Отправить личное сообщение для mishinaelle Посетить домашнюю страницу mishinaelle Найти все сообщения от mishinaelle
  № 29  
mishinaelle
 
Аватар для mishinaelle

Регистрация: Mar 2003
Адрес: Moscow
Сообщений: 669
Отправить сообщение для mishinaelle с помощью ICQ
2 Pietrovich: прикольно, но эта функция прошла мимо меня
спасибо за то, что раскрыл глаза.

Старый 29.10.2003, 19:21
MiDoS вне форума Посмотреть профиль Отправить личное сообщение для MiDoS Найти все сообщения от MiDoS
  № 30  
MiDoS

Регистрация: Jan 2001
Сообщений: 12
Развели дискуссию... Меньше слов, больше дела!

$ext = @eregi_replace("(.*)[\.]([a-z0-9]{1,})$", "\2", "$filename");

Если расширения нет, то вернет нулевую строку.
Еще полезно добавить обработку на недопустимые символы в имени файла...

Вот и все! Учите PHP и особенно регулярные выражения!

Создать новую тему   Часовой пояс GMT +4, время: 21:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:45.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.