我在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
}
}
}
}
}
?>
任何人都可以帮助我吗?我很迷惑。非常感谢你的帮助。
答案 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_name
和number
进行搜索。然后获取文件的内容,并使用换行explode
\n
,以便我们识别每一行。然后将该行的第一个字符与number
进行比较以进行搜索。如果匹配,则通过使用\n
爆炸文件内容来查找数组中的上一个和下一个元素