2

HTMLファイルのローダーのように、フォルダーにファイルを自動的に含める文字列を返すクラスを構築しています。

呼び出されるメソッドは次のとおりです。

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

爆発しません.か?

前もって感謝します。

4

2 に答える 2

6

結果の配列に1つの要素を強制するため、ファイル名全体が含まれるようになります。

explode( '.', $ext, 1 )

代わりに

explode( '.', $ext );

証明:http ://codepad.org/01DLpo6H

于 2012-05-03T04:35:27.980 に答える
0

分解を1つの配列エントリの生成に制限したため、何も実行できません。

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

制限は少なくとも2である必要があります。または、さらに良いことに、ファイル名コンポーネントを適切に処理するpathinfo()関数を使用する必要があります。

于 2012-05-03T04:35:32.123 に答える