Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите разобраться с регуляркой, есть код, не понимаю что он делает 
:(
    Опции темы
mark2011
Дата 8.11.2011, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 28.6.2011

Репутация: 2
Всего: 2



Всем доброго времени суток!

Вопрос простой для профи, но мне надо знать точный ответ. Настраиваю Uploadify, там есть такой кусок кода:

Код

$ext = preg_replace('/(?:.*)(\.{1}[a-zA-Z]{3,4})$/','$1', $_FILES['Filedata']['name']);


Руки чешутся удалить, но не понимаю, что он делает.... подскажите кто-нибудь пожалуйста.
PM WWW ICQ Skype   Вверх
ksnk
Дата 8.11.2011, 17:06 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



строчка выедает расширение файла.
Видимо, по мнению Uploadify, последние 3 или 4 знака латинского алфавита после точки  и будут расширением файла. Возможно, в этом есть своя сермяжная правда, однако многотомные архивы r01, r02... и двухбуквенные расширения (js) будут признаны некорректными.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
$дмитрий
Дата 8.11.2011, 18:24 (ссылка) |   (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



Какой-то шаблон избыточный, проще /.*(\.[a-z]{3,4})$/i
PM MAIL   Вверх
zammar
Дата 8.11.2011, 20:35 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 289
Регистрация: 30.10.2008

Репутация: нет
Всего: нет



А это еще правильнее:

$pos = strrpos($_FILES['Filedata']['name'], '.');
$ext = substr($_FILES['Filedata']['name'], $pos + 1);
PM   Вверх
mark2011
Дата 8.11.2011, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 28.6.2011

Репутация: 2
Всего: 2



Короче, я так понял, эту регулярку можно безболезненно убрать и вообще код и всю логику php поменять на свою (а она у меня непростая )))))
PM WWW ICQ Skype   Вверх
Lols
Дата 8.11.2011, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 21.10.2011

Репутация: нет
Всего: нет



Так что удаляйте, а, вернее, исправляйте, это вполне распространенная вещь (сама много раз сталкивалась).
PM MAIL   Вверх
message
Дата 21.12.2011, 00:00 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 8.9.2008

Репутация: 3
Всего: 3



Цитата(zammar @ 8.11.2011,  20:35)
А это еще правильнее:

$pos = strrpos($_FILES['Filedata']['name'], '.');
$ext = substr($_FILES['Filedata']['name'], $pos + 1);

A так слабо?
Код

$extension = pathinfo('image.png', PATHINFO_EXTENSION);

PM MAIL   Вверх
Shogun
Дата 22.12.2011, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сёгун-сан
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 8.6.2006
Где: Кишинёв

Репутация: 9
Всего: 11



Цитата(message @  21.12.2011,  00:00 Найти цитируемый пост)
A так слабо?
код PHP
1: $extension = pathinfo('image.png', PATHINFO_EXTENSION);

+1 - еще тут не помешает strtolower

Но как известно ограничившись проверкой лишь расщирения, может плохо кончится...

Нужно еще и mime тип файла проверить.
Но и тут есть одно но, Uploadify да и флэш в ообщем при рагрузке файла меняет его mime на "application/octet-stream"!

Нужно уже в пхп вернуть этому файлу его миме тип. Например так: 
Код

$file_info = finfo_open(FILEINFO_MIME_TYPE);
$file->type = finfo_file($file_info, $file->tmp_name);
finfo_close($file_info);


или с помошью mime_content_type если оно есть.



--------------------
2b || !2b
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0840 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.