我正在构建一个类,该类返回一个字符串,该字符串将自动包含文件夹中的文件,有点像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
.
爆炸不认识.
吗?
提前谢谢你。
您强制生成的数组具有 1 个元素,这会导致它具有整个文件名。
explode( '.', $ext, 1 )
应该改为
explode( '.', $ext );
证明:http://codepad.org/01DLpo6H
您已将分解限制为生成 1 个数组条目,因此它永远无法执行任何操作:
print_r(explode('.', 'a.b', 1));
Array
(
[0] => a.b
)
限制应至少为 2。 或者,更好的是,您应该使用 pathinfo() 函数,它可以为您正确处理文件名组件。