如何根据一个string,每3个字符,创建一个文件夹?($sting长度1-23,最后3个字符为文件名)
$sting   => 文件夹 => 文件名
a123456     a/123      456.php
5jo09jjao   5jo/09j    jao.php
48         (不创建)    48.phpif(!is_dir(dirname(__FILE__) . '/文件夹)){
  mkdir(dirname(__FILE__) . '/文件夹, 0777, true);
}用strlen(),计算字符串长度?chunk_split($sting, 3, "/"),每3位从前面数到后面,不是后面数到前面?
求教了。

解决方案 »

  1.   

    看下是不是你想要的。没做其他字符的限制。 function GetFile($str)
    {
    $str = substr($str, -3);
    return $str.".php";
    }

    function GetPath($str)
    {
    $org_str = substr($str,0,strlen($str)-3);
    $temp_str = $org_str;
    $path_str = "";
    $array = array();
    for($i=0;$i<(strlen($org_str)/3);$i++)
    {
    $array[]= substr($temp_str, -3);
    $temp_str = substr($temp_str,0,strlen($temp_str)-3);
    }
    for($i=count($array)-1;$i>=0;$i--)
    $path_str.=$array[$i]."/";
    return $path_str;
    }

    $str = "abcdefgh";
    echo GetFile($str);
    echo "<br>";
    echo GetPath($str);
      

  2.   

    一个递归搞定。
    要求字符串长度必须大于3并且是3的倍数。
    自己修改ROOT_PATH这个常量的值为你的硬盘目录,将会在这个目录下创建文件夹和文件。
    #! /usr/local/php/bin/php<?phpdefine( 'BEGIN_POS', 0 );
    define( 'CUT_LEN', 3 );
    define( 'MIN_LEN', 4 );
    define( 'ROOT_PATH', '/Users/angryfrog/website' );$str = $argv[1] ? $argv[1] : '123abc456def';$strlength = strlen( $str );
    function make_path( $begin_pos = 0, $str, $path = ROOT_PATH ){ global $strlength; $dir_name = substr( $str, $begin_pos, CUT_LEN );
    $file_name = ''; $begin_pos += CUT_LEN; if( $begin_pos >= $strlength ){ $file_name = $path . '/' . $dir_name . '.php'; if( file_exists( $file_name ) ){
    echo "The file is exists! I will give up the job!\n";
    return 0;
    } mkdir( $path, 0777, true ); if( is_dir( $path ) ){
    file_put_contents( $file_name, "If you can see me! so you are not a fool!\n" . PHP_EOL );
    return 1;
    }
    }
    else{
    $path .= '/' . $dir_name;
    call_user_func( __FUNCTION__, $begin_pos, $str, $path );
    }
    }if( $strlength > MIN_LEN && $strlength % CUT_LEN == 0 ){
    make_path( BEGIN_POS, $str );
    die("Mission complete!\n");
    }
    else{
    die( "Not enough length of the \$str or illegal length!\n" . PHP_EOL );
    }
      

  3.   

    $s = 'a123456';$t = array();
    while(strlen($s)) {
      array_unshift($t, substr($s, -3));
      $s = substr($s, 0, -3);
    }
    $t = join('/', $t);@mkdir(dirname($t), 0666, true);
    fopen("$t.php", 'w');