我在记事本一行一个的存了N个类似142839 这样的数字请问怎么才可以写个PHP 文件 批量把 记事本的 142839 这样的数字 转换成 book/142/142839/142839.zip
142839 
142838
142837
142836
142835
142834要变成 
book/142/142839/142839.zip
book/142/142838/142838.zip
book/142/142837/142837.zip
book/142/142836/142836.zip
book/142/142835/142835.zip
数字还有可能只有5位 ( 那 中间部分就只是前2位)
14281
14282
14283
14284
14285
14286要变成 
book/14/14281/14281.zip
book/14/14282/14282.zip
book/14/14283/14283.zip
book/14/14284/14284.zip
book/14/14285/14285.zip

解决方案 »

  1.   

    结合strlen, substr应该不难做到。自己动动手吧。
      

  2.   

    每个数字来了,把它当字符串处理,行判断是5位还是6位,5位是一种处理方式,6位是一种处理方式,然后进行组合就可以了。这个问题应该不是很难,
    $str = 'book/'. (strlen('字符串') == 5)? substr('字符串', 0, 2) : substr('字符串', 0, 3) . '/' . 字符串 . '/' 字符串 . '/' 字符串 . '.zip';
      

  3.   

    $arr = file("your_file");
    print_r(array_map("tihuan",$arr));
    function tihuan($a) {
      $a = trim($a);
      return preg_replace("/^(.*)(\d{3})/","book/\\1/$a/$a.zip",$a);
    }
      

  4.   

    <?php 
    $arr = file("1.txt");
    print_r(array_map("tihuan",$arr));
    function tihuan($a) {
    $a = trim($a);
        $b=strlen('$a');
        if($b == 5)
        {
         return preg_replace("/^(.*)(\d{4})/","book/\\1/$a/$a.zip",$a);
        }
        else 
    return preg_replace("/^(.*)(\d{3})/","book/\\1/$a/$a.zip",$a);


    }
    ?>
      

  5.   

    上面的程序输出的结果Array ( [0] => book/123/123456/123456.zip [1] => book/234/234567/234567.zip [2] => book/23/23456/23456.zip ) 
    这样才可以把   book/23/23456/23456.zip  这样的字符串一行一个 存在 另一个文本文件里。
      

  6.   


    <?php$s=149939;
    $id=intval($s/1000);
    echo "book/$id/$s/$s.zip";
    $s=14993;
    $id=intval($s/1000);
    echo "book/$id/$s/$s.zip";?>