2012-05-03 6 views
2

Я создаю класс, который возвращает строку, которая будет автоматически включать файлы в папку, вроде как загрузчик для HTML-файла.Взрыв имени файла для разделения имени и расширения не будет работать в PHP?

Вот метод, который будет называться:

function build_external_file_include($_dir){ 
    $_files = scandir($_dir); 
    $_stack_of_file_includes = "";//will store the includes for the specified file. 
foreach ($_files as $ext){ 
    //split the file name into two; 
    $fileName = explode('.',$ext, 1);//this is where the issue is. 

    switch ($fileName[1]){ 
     case "js": 
      //if file is javascript 
      $_stack_of_file_includes = $_stack_of_file_includes."<script type='text/javascript' src='".$dir.'/'. $ext ."'></script>"; 

      break; 
     case "css";//if file is css 
      $_stack_of_file_includes = $_stack_of_file_includes."<link rel=\"stylesheet\" type=\"text/css\" href=\"".$dir.'/'. $ext."\" />"; 
      break; 
     default://if file type is unkown 
      $_stack_of_file_includes = $_stack_of_file_includes."<!-- File: ". $ext." was not included-->"; 
    } 


} 
return $_stack_of_file_includes; 
} 

Таким образом, это работает без каких-либо ошибок. Но он не делает того, что он должен делать ... или, по крайней мере, того, что я намерен делать. С технической точки зрения здесь,

$fileName[1] должен быть расширением js

$fileName[0] должно быть имя файла main

но

$fileName[0] является main.js.

взорвано не распознается .?

Заранее спасибо.

+0

Изменить '$ fileName = explode ('.', $ Ext, 1);' to '$ fileName = explode ('.', $ Ext);' –

+0

Я предлагаю вам использовать ['pathinfo() '] (http://php.net/manual/en/function.pathinfo.php) вместо explode – diEcho

+0

@felipe .. что вы будете с этими именами файлов' jquery-.1.7.1.min.js' – diEcho

ответ

5

Вы заставляете результирующий массив иметь 1 элемент, который заставляет его иметь полное имя файла.

explode('.', $ext, 1) 

вместо этого следует

explode('.', $ext); 

Доказательство: http://codepad.org/01DLpo6H

+0

Ничего себе, я так глуп сейчас. Хотя я не могу вас отблагодарить. –

+1

@FelipeTadeo Случается для всех нас. Продолжайте в том же духе. – Sampson

0

Вы ограничила взорваться производства элемент массива, поэтому он никогда не может ничего сделать:

print_r(explode('.', 'a.b', 1)); 
Array 
(
    [0] => a.b 
) 

Предел должен быть не менее 2. или, еще лучше, вы должны использовать функцию pathinfo(), которая должным образом обрабатывает компоненты имени файла для вас.

 Смежные вопросы

  • Нет связанных вопросов^_^