写出一个能创建多级目录的PHP函数
- <?php
- /*
- 21、写出一个能创建多级目录的PHP函数。
- *系统环境:windows/linux
- *编译环境:php5/php4
- *输入参数:存放在in.txt,多个参数时空格分隔
- 参数1是一个路径,用\或者/分隔
- 例如:www\b\c\d\e d:\www\b\c\d\e /var/www/html var/../b/c
- 输出:out.txt
- */
- $params=getParams(1);
- $dirParh=trim($params[0]);
- mkdirP($dirParh);
- function mkdirP($dirParh)
- {
- $dirParh=str_replace("\\", "/", $dirParh);
- $paths=split("/",$dirParh);
- $nowPath="";
- if(substr($dirParh, 0,1)=="/")
- {
- $nowPath="/";
- }
- foreach($paths as $path)
- {
- if($path=="")
- {
- continue;
- }
- $nowPath.=$path;
- echo "$nowPath\n";
- //目录不存在
- if(!is_dir($nowPath))
- {
- echo "mkdir $nowPath\n";
- //建立目录失败
- if(!mkdir($nowPath))
- return false;
- }
- $nowPath=rtrim($nowPath,"/");
- $nowPath.="/";
- }
- return true;
- }
- /*
- 从in.txt里读取参数
- */
- function getParams($paramNum)
- {
- $in=file_get_contents("in.txt");
- if($in===FALSE){
- error_msg("cannot read in.txt,please check in.txt exists\n");
- }
- $in=preg_replace("/(\s+)/i", " ", $in);
- //多个参数时,按照空格分隔
- $parms=split(" ",trim($in));
- if($parms===FALSE)
- {
- error_msg("cannot get param from in.txt\n");
- }
- if(count($parms) < $paramNum)
- {
- error_msg("it needs $paramNum params\n");
- }
- return $parms;
- }
- /*
- 把结果输出到输出文件里
- 当isClean=true时清空out.txt
- */
- function output($msg,$isClean=false)
- {
- if($isClean)
- {
- $handle = fopen('out.txt', 'w');
- fclose($handle);
- }
- error_log($msg."\n", 3, "out.txt");
- }
- /*
- 输入错误信息
- 如果$is_exit表示输入信息后退出
- */
- function error_msg($msg,$is_exit=true)
- {
- if($is_exit)
- die($msg."\n");
- else
- echo $msg."\n";
- }
- ?>