За последние 24 часа нас посетили 145673 программиста и 2587 роботов. Сейчас ищут 1603 программиста ...

Имя файла и расширение файла

Тема в разделе "Прочие вопросы по PHP", создана пользователем Awilum, 20 мар 2012.

  1. Awilum

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

    С нами с:
    15 ноя 2009
    Сообщения:
    325
    Симпатии:
    26
    Адрес:
    Earth
    У меня есть такие вот функции в моем фреймворке/проекте:
    Код (Text):
    1.  
    2.         /**
    3.          * Get the File extension.
    4.          *
    5.          *  <code>
    6.          *      echo File::ext('filename.txt');
    7.          *  </code>
    8.          *
    9.          * @param  string $filename The file name
    10.          * @return string
    11.          */
    12.         public static function ext($filename){
    13.            
    14.             // Redefine vars
    15.             $filename = (string) $filename;
    16.            
    17.             // Return file extension
    18.             return substr(strrchr($filename, '.'), 1);
    19.              
    20.         }
    21.        
    22.  
    23.         /**
    24.          * Get the File name
    25.          *
    26.          *  <code>
    27.          *      echo File::name('filename.txt');
    28.          *  </code>
    29.          *
    30.          * @param  string $filename The file name
    31.          * @return string
    32.          */
    33.         public static function name($filename) {
    34.  
    35.             // Redefine vars
    36.             $filename = (string) $filename;
    37.  
    38.             // Return filename
    39.             return basename($filename, '.'.File::ext($filename));
    40.         }
    Столкнулся вот с такой проблемой:
    Например функция/метод ext() покажет на такой файл index.view.php возвращает расширение - php . Но на деле я имею .view.php и это должен получить

    Не хочется хардкодить, у кого нибудь какие то идеи есть?
     
  2. NeoXidant

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

    С нами с:
    8 фев 2010
    Сообщения:
    121
    Симпатии:
    1
    расширение у файла может быть лишь одно, так что код работает верно, расширение - .php
    но если нужно получать именно ".view.php", то нужно изменить код - получать не расширение файла, а его имя и обрезать текст до первой встречной "." (точки)
    тогда будет определять index.view.php как .view.php
     
  3. Awilum

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

    С нами с:
    15 ноя 2009
    Сообщения:
    325
    Симпатии:
    26
    Адрес:
    Earth
    вопрос в том что бы избежать хардкода... не создавать же еще одну отдельную функцию которая будет за расширение считать .view.php и такой формат мне возвращать...
     
  4. NeoXidant

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

    С нами с:
    8 фев 2010
    Сообщения:
    121
    Симпатии:
    1
    вы и так "хардкодите"
    http://www.php.ru/manual/function.filetype.html - получить расширение файла (вы написали велосипед)
    http://www.php.ru/manual/function.basename.html - получить имя файла
    получить "псвевдо расширение" файла (как вы хотите - .view.php):
    Код (Text):
    1. function pseudoext($filename) {
    2.     print substr( strstr(basename($filename), '.'), 1 );
    3. }
    4.  
    5. $file = 'header.inc.php';
    6. pseudoext($file);
    вывод: inc.php