php将文本文件与每10个数字组合在一起

时间:2013-12-18 09:55:41

标签: php file foreach

我有许多用数字命名的日志文件。

100001.txt
100002.txt
...
119998.txt
119999.txt

现在我想将它们与每10个数字相结合。为exapmle:100000.txt - 100009.txt - >名为10000a.txt,100010.txt - 100019.txt -> named 10001a.txt , 100020.txt - 100029.txt - >名为10002a.txt ... 119990.txt - 119999.txt -> named 11999a.txt`。 然后删除了所有旧文件。

$files = glob('/var/logs/my_log/'*');
foreach($files as $file){
    $num = str_replace(array('/var/logs/my_log/','.txt'),'',$file);//get numbers like 100000
    if($num%10==0){
        $name = substr($num, 0, -1).'a.txt';//10001a.txt
        foreach(array_chunk($num, 10) as $values) {
            echo $values.'<br>';//this will group by 1000001-1000010, but i need 1000000-1000009
            //chmod('/var/logs/my_log/'.$values.'.txt',0777);//should i set 0777 for write and remove files?
            //$txt.=file_get_contents('/var/logs/my_log/'.$values.'.txt');//get old files value
            //unlink('/var/logs/my_log/'.$values.'.txt');//remove old files
        }
        //file_fut_contents('/var/logs/my_log/'.$name.'.txt',$txt);//save into new file
        //$name=$txt=NULL;//unset var
    }
}

2 个答案:

答案 0 :(得分:0)

您可以使用fopen($filename, $mode)功能实现此目的。它有一个追加模式,将文件指针放在给定文件的末尾。从那里,您可以使用其他文件功能,如fwrite()fclose()。关于如何在manual

中使用fopen,有一些很好的例子

答案 1 :(得分:0)

独自找出方法。

<?php
$files = glob('/var/logs/my_log/*');
foreach($files as $file){
    $num =str_replace(array('.txt','/var/logs/my_log/'),'',$file);
    $txt.=file_get_contents($file).'/r/n';
    if(substr($num,-1)==9){
        file_put_contents('/var/logs/my_log/'.substr($num,0,-1).'a.txt',$txt);
        $txt=NULL;      
    }
    unlink($file);
}
?>