За последние 24 часа нас посетили 15160 программистов и 1672 робота. Сейчас ищут 875 программистов ...

Проверка расширения.

Тема в разделе "PHP для новичков", создана пользователем amen, 15 дек 2009.

  1. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Как, сканируя каталог readdir' ом заносить в массив только картинки?

    PHP:
    1.  
    2.         while ($file = readdir($dir))
    3.         {
    4.             if ($file !="." && $file !="..")
    5.             {
    6.                 $images[] = $file;
    7.             }
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Проверять расширение.
    Если скрипт для CLI, то дополнительно я проверял битость картинки с помощью функций GD+
    Где-то я выкладывал даже скрипт, который шарил по вложенным разным папкам и искал только картинки скачанные и проверял их валидность, складывая в другую папку.
     
  3. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Регуляркой?

    И что такое CLI? Википедия выдаёт 4 значения.
     
  4. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    http://ru.wikipedia.org/wiki/Интерфейс_командной_строки

    Можно и без.
    Ну например так:

    PHP:
    1. <?
    2. $extension = end(explode(".", $filename));
    3. ?>
     
  5. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    Apple, спасибо. Вот что получилось:

    PHP:
    1.  
    2.       <?
    3.       while ($file = readdir($dir))
    4.       {
    5.           if ($file !="." && $file !=".." && (end(explode(".", $file)) == 'jpg' ||
    6.                                               end(explode(".", $file)) == 'jpeg'||
    7.                                               end(explode(".", $file)) == 'gif'))
    8.           {
    9.               $images[] = $file;
    10.           }
    11.       }
    12.       ?>
    Как-то громоздко, но работает.
     
  6. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ну зачем же так нагромождать?
    Можно поступить более рационально:

    PHP:
    1. <?php
    2.  
    3. // Allowed extensions
    4. $exts = array("jpg", "gif", "png", "bmp");
    5.  
    6. if(in_array(end(explode(".", $filename)), $exts)) {
    7.     // An image has been found
    8. }
    9.  
    10. ?>
    А вообще, регулярку можно просто заюзать и всё.
     
  7. amen

    amen Активный пользователь

    С нами с:
    18 сен 2009
    Сообщения:
    298
    Симпатии:
    0
    Адрес:
    Узбекистан
    А что будет быстрее?
    Читал, что если можно обойтись без регулярок, лучше их не использовать.
     
  8. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    А я читал кое-что другое:
    http://www.hostland.su/books/php/page/289.html