2012-05-03 9 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);を' $ fileName = explode( '。'、$ ext); ' –

+0

に変更する[pathinfo() '](http://php.net/manual/en/function.pathinfo.php)の代わりに – diEcho

+0

@felipe ..これらのファイル名で' jquery-.1.7.1.min.js'をどうぞ – diEcho

答えて

5

結果の配列に1つの要素が含まれていると、全体のファイル名になります。あなたはそれが何かを行うことはできませんので、1つの配列のエントリを作成する爆発限られてきたhttp://codepad.org/01DLpo6H

+0

うわー、私は今、とても馬鹿だと感じています。私は十分にあなたに感謝することはできません。 –

+1

@FelipeTadeo私たちすべてに起こります。これからもいい結果を出し続けてください。 – Sampson

0

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

explode('.', $ext, 1) 

ではなく

explode('.', $ext); 

証明する必要があります

制限は2以上にする必要があります。または、より良いのは、ファイル構成要素を適切に処理するpathinfo()関数を使用する必要があります。

関連する問題