如何使用PHP获取一定数量的行?

时间:2015-12-01 06:51:20

标签: php file

我在PHP代码中需要一些帮助。 我的情况是这样的: 我在一个文件夹中有一个文件列表,比如说

file1.txt
file2.txt
file3.txt

等等.. 这些文件的内容是:

1 M 0.5 0.5 0.5 0.5 0.5
2 L 0.5 0.17 0.3 0.9 0.5
3 Q 0.5 0.5 0.65 0.5 0.8
4 V 0.7 0.6 0.7 0.7 0.7
5 H 0.5 0.5 0.5 0.5 0.4 
6 R 0.2 0.5 0.15 0.5 0.5 
7 T 0.5 0.5 0.43 0.2 0.3

依旧......

我还有另一个文件,请说 example.txt ,内容为:

>file1.txt_6
>file1.txt_7
>file2.txt_1
>file3.txt_3
>file2.txt_5
>file3.txt_2

所以我需要检查 example.txt 的每一行,如果文件夹中存在文件名,那么我需要打开文件并检查是否,例如,的第一行> example.txt > file1.txt_6 ,然后我需要打开 file1.txt 并检查 file1中数字6的位置.txt 然后我需要获取包含数字6的行的上一行和下一行并将其保存在新文件中。

到目前为止,这是我的代码:

<?php

    $files = glob("/directory of file1,file2,and so on/*.txt");
    $array = file("example.txt",FILE_IGNORE_NEW_LINES);

        foreach($files as $file){
            foreach($array as $key => $value){
                $data = file("$file",FILE_IGNORE_NEW_LINES);
                $name = substr($value,1,9);
                $site1 = substr($value,11,1);
                if($name === $file){
                    foreach($data as $k => $val){
                        $site = substr($val,0,1);
                        if($site1 === $site){
                            //here is where i think i should put the code to take prev and next line
                        }
                    }
                }
            }
        }

?>

任何人都可以帮助我吗?我很迷惑。非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

<?php 
    $handle = fopen("example.txt", "r");
    if ($handle) {
        while (($line = fgets($handle)) !== false) {
            $line = str_replace(">","",$line);
            $line_a = explode("_",$line);
            $file_name = $line_a[0];
            $number = (int)$line_a[1];
            if(file_exists($file_name)){
                $contents = file_get_contents($file_name);
                $contents_array = explode("\n",$contents);
                foreach($contents_array as $ar){
                    $previous_line='Empty';
                    $next_line ='Empty';
                    $number_in_line = (int)$ar[0];
                    if($number==$number_in_line){
                        if(isset($contents_array[$number_in_line-2])){
                            $previous_line = $contents_array[$number_in_line-2];
                        }
                        if(isset($contents_array[$number_in_line])){
                            $next_line = $contents_array[$number_in_line];
                        }
                        echo "Searching on  ".$file_name."<br>";
                        echo "Searching for number : ".$number."<br>";  
                        echo "previous line is :".$previous_line."<br>";
                        echo "next line is :".$next_line."<br><hr>";                    
                    }
                }
            }
            else {
                echo $file_name." not exist <hr>";
            }
        }

        fclose($handle);
    } else {
        die('Error opening file');
    } 
?>

打开example.txt文件并逐行阅读内容。将>符号和explode行替换为_以分隔file_namenumber进行搜索。然后获取文件的内容,并使用换行explode \n,以便我们识别每一行。然后将该行的第一个字符与number进行比较以进行搜索。如果匹配,则通过使用\n爆炸文件内容来查找数组中的上一个和下一个元素