Php 从数组中查找并组合两个字符串

Php 从数组中查找并组合两个字符串,php,arrays,string,Php,Arrays,String,我有一个包含以下行的文本文件,我已将其读入名为$pirep的数组中 06:36 Block to Block Duratio n: 07:37 06:36 Final Fuel: 1044 Lbls 我已经编写了查找“块到块持续时间”的代码,并将随后的时间记录到数据库中。问题是代码无法找到字符串,因为文本文件被分解成1KB块,恰好正好落在我的搜索字符串的中间。 我知道如何使用str_replace(PHP_EOL')连接这两个字符串,如果每次都在同一个地方写入数据,那就太好了,但事实并非

我有一个包含以下行的文本文件,我已将其读入名为$pirep的数组中

06:36  Block to Block Duratio
n: 07:37 
06:36  Final Fuel: 1044 Lbls
我已经编写了查找“块到块持续时间”的代码,并将随后的时间记录到数据库中。问题是代码无法找到字符串,因为文本文件被分解成1KB块,恰好正好落在我的搜索字符串的中间。

我知道如何使用str_replace(PHP_EOL')连接这两个字符串,如果每次都在同一个地方写入数据,那就太好了,但事实并非如此

是否有一种方法可以识别每行之前的时间模式并合并行,直到找到该模式的下一个匹配项,以便最终结果如下所示:

06:36  Block to Block Duration: 07:37
06:36  Final Fuel: 1044 Lbls
这只是我的第二个问题,我真的不希望这件事让任何人感到不安。谢谢

编辑

下面是我用来解析文本文件的代码

//Read temp file to array
$pirep=file("temp.txt");
$num=count($pirep);

//Assign known variables
$pnum=explode(":",$pirep[2]);
$dca=$pnum[1];
$fltnum=explode(":",$pirep[1]);
$flt=$fltnum[1];
$date=$pirep[0];
//$dep=$pirep[5];
//$dest=$pirep[6];

//Determine if this is a mainenance division flight, set variable accordingly
for($i=0;$i<$num;$i++) {
    $line=$pirep[$i];
    if(strpos($line,"MAINT")!==FALSE) {
        $maint="yes"; } 
}

//Cycle through pirep array and find departure and destination airports
for($i=0;$i<$num;$i++) {
    $line=$pirep[$i];
    if(strpos($line,"Departing Airport")!==FALSE) {
        $dep=$pirep[$i]; }
}
for($i=0;$i<$num;$i++) {
    $line=$pirep[$i];
    if(strpos($line,"Destination Airport")!==FALSE) {
        $dest=$pirep[$i]; }
}

//Cycle through pirep and find Block to Block Duration
for($i=0;$i<$num;$i++) {
    $line=$pirep[$i];
    if(strpos($line,"Block to Block Duration")!== FALSE) {
        $duration=ltrim(strstr($line,"Duration"),"Duration:"); 
        $flttime=explode(":",$duration);
        $minutes=($flttime[0]*60)+$flttime[1]; } }

//Cycle through pirep and find comments if any exist
for($i=0;$i<$num;$i++) {
    $line=$pirep[$i];
    if(strpos($line,"comments")!== FALSE) {
        $raw_comments=ltrim(strstr($line,"comments "),"comments");
        $comments=addslashes($raw_comments); } }

//Connect to DCA and find pilot
include('connect_db.php');
$stmt="SELECT * FROM newpilots WHERE dca=$dca LIMIT 1";
$result=mysql_query($stmt);
if(!$result) {echo"<BR> Query error<BR>"; }
if(mysql_num_rows($result)==0) {echo "<BR>Pilot $dca Not Found<br>"; }
$count=mysql_num_rows($result);
    $lastname=mysql_result($result,0,'lastname');
    $firstname=mysql_result($result,0,'firstname');
    $current_minutes=mysql_result($result,0,'minutes');
    $email=mysql_result($result,0,'email');
    $name=$firstname." ".$lastname;

//Check for empty maint and comment variables
if(!isset($maint)) {$maint="no";}
if(!isset($comments)) {$comments="None";}
$timestamp=time();
$stmt="INSERT INTO pireps VALUES('','$dca','$name','$flt','$maint','$minutes','$comments','$timestamp')";
$result=mysql_query($stmt);
if(!$result) {echo "Query Error";}

$updated_minutes = $current_minutes + $minutes;
$stmt="UPDATE newpilots SET minutes='$updated_minutes', lastfile='$timestamp', flag='YES' WHERE dca=$dca";
$result=mysql_query($stmt);
if(!$result) {echo "Query Error Updating Roster"; }

                    $to  = 'email@hidden.com, ';
                    $headers = 'Cc: '.$email."\r\n";
                    $subject = "DC-3 Airways FSAcars Pirep Verification";
                    if($maint=="yes") { $headers = 'Cc: also.hidden.com' . "\r\n"; }
                    $headers .= 'From: admin@dcascreenshots.net'."\r\n";
                    $headers .= 'Reply-To: admin@dcascreenshots.net'."\r\n";
                    $body = "This is an automatic email generated by the DC-3 Airways FSAcars system.
The following information has been posted;

    Date Submitted: $date
    Pilot $dca
    Flight Number: $flt
    $dep
    $dest
    Duration: $duration
    Pilot's Comments:
    $comments

Please log in to the APS system to verify your hours. If there is a discrepancy, please contact a staff member.";

                if (!mail($to, $subject, $body, $headers)) {
                    echo "Email Not Sent.<br>"; }
[2015/05/30 22:58:00]
Flight IATA:PAJN-PADU
Pilot Number:0309
Company ICAO:DCA
Aircraft Type:DC3
Departing Airport: PAJN
Destination Airport: PADU
Online: No
Route:RUKIE V317 CSPER T278 HAPIT V440 CENTA T269 YAK V440 MDO T237 HOM V321 AKN T271 BINAL T227 MORDI G8 ZEBUV
Flight Level:10000
22:58  Zero fuel Weight: 21531 Lbs, Fuel Weight: 4664 Lbs
22:59  Parking Brakes off
22:59  Take-off
22:59  Take off Weight: 26187 Lbs
22:59  Wind: 261º @ 010 Knots Heading: 281º
22:59  POS N58º 21´ 17´´ W134º 34´ 32´´ 
22:59  Gear Up: 119 Knots
23:10  TOC
23:10  Fuel Weight: 4545 Lb
23:14  Wind:313º@001 Knots Heading: 272º Ground Speed: 166 Knots Altitude 9996 ft
23:29  Wind:322º@004 Knots Heading: 271º Ground Speed: 165 Knots Altitude 10059 ft
23:44  Wind:313º@007 Knots Heading: 320º Ground Speed: 160 Knots Altitude 10042 ft
23:59  Wind:297º@007 Knots Heading: 318º Ground Speed: 160 Knots Alt
itude 10049 ft
00:14  Wind:273º@008 Knots Heading: 317º Ground Speed: 161 Knots Altitude 10052 ft
00:28  Simulation Rate 2x
00:29  Wind:279º@009 Knots Heading: 270º Ground Speed: 158 Knots Altitude 10055 ft
00:44  Wind:289º@012 Knots Heading: 270º Ground Speed: 156 Knots Altitude 10072 ft
00:59  Wind:292º@012 Knots Heading: 269º Ground Speed: 157 Knots Altitude 10072 ft
01:14  Wind:288º@011 Knots Heading: 268º Ground Speed: 158 Knots Altitude 10075 ft
01:29  Wind:273º@009 Knots Heading: 266º Ground Speed: 159 Knots Altitude 10078 ft
01:44  Wind:261º@007 Knots Heading: 296º Ground Speed: 163 Knots Altitude 10062 ft
01:59  Wind:260º@005 Knots Heading: 295º Ground Speed: 164 Knots Altitude 10032 ft
02:14  Wind:238º@003 Knots Heading: 294º Ground Speed: 167 Knots Altitude 10026 ft
02:29  Wind:345º@004 Knots Heading: 295º Ground Speed: 166 Knots Altitude 10082 ft
02:44  Wind:356º@0
04 Knots Heading: 238º Ground Speed: 171 Knots Altitude 10009 ft
02:59  Wind:040º@003 Knots Heading: 236º Ground Speed: 173 Knots Altitude 10022 ft
03:14  Wind:070º@004 Knots Heading: 236º Ground Speed: 173 Knots Altitude 10052 ft
03:29  Wind:111º@008 Knots Heading: 233º Ground Speed: 174 Knots Altitude 10045 ft
03:44  Wind:137º@015 Knots Heading: 221º Ground Speed: 170 Knots Altitude 10036 ft
03:59  Wind:174º@015 Knots Heading: 221º Ground Speed: 163 Knots Altitude 10068 ft
04:14  Wind:182º@016 Knots Heading: 220º Ground Speed: 158 Knots Altitude 9940 ft
04:29  Wind:172º@022 Knots Heading: 218º Ground Speed: 156 Knots Altitude 9885 ft
04:44  Wind:164º@030 Knots Heading: 214º Ground Speed: 153 Knots Altitude 9921 ft
04:59  Wind:168º@031 Knots Heading: 214º Ground Speed: 151 Knots Altitude 9937 ft
05:14  Wind:164º@026 Knots Heading: 214º Ground Speed: 155 Knots Altitude 10029 f
t
05:29  Wind:158º@026 Knots Heading: 213º Ground Speed: 158 Knots Altitude 10000 ft
05:44  Wind:162º@021 Knots Heading: 245º Ground Speed: 171 Knots Altitude 10006 ft
05:56  Simulation Rate 1x
05:59  Wind:160º@023 Knots Heading: 243º Ground Speed: 170 Knots Altitude 10022 ft
06:14  Wind:167º@016 Knots Heading: 217º Ground Speed: 160 Knots Altitude 10013 ft
06:15  TOD
06:15  Fuel Weight: 1145 Lb
06:26  Gear Down: 143 Knots
06:26  Flaps:1 at 142 Knots
06:27  Flaps:2 at 142 Knots
06:29  Wind:120º@006 Knots Heading: 191º Ground Speed: 108 Knots Altitude 2470 ft
06:31  Flaps:4 at 105 Knots
06:34  TouchDown:Rate -124 ft/min Speed: 58 Knots
06:35  Flaps:0 at 39 Knots
06:35  Land
06:35  Wind:335º@010 Knots
06:35  Heading: 139º
06:35  Flight Duration: 07:36 
06:35  Landing Weight: 22577 Lbs
06:35  POS N53º 53´ 54´´ W166º 32´ 38´´ 
06:36  Parking brakes on
06:36  Block to Block Duratio
n: 07:37 
06:36  Final Fuel: 1044 Lbls
06:36  Spent Fuel: 3619 Lbls
06:36  Flight Length: 1221 NM
06:36  TOD Land Length: 43 NM
明白了!这是有效的

if($i>=15) {
if(substr($line,2,1)!=":") {
    $first_line=str_replace(PHP_EOL,"",$pirep[$i-1]);
    $line=$first_line.$pirep[$i];
    echo $line."<br>";
    }
}
如果($i>=15){
if(substr($line,2,1)!=“:”){
$first_line=str_replace(PHP_EOL,“,$pirep[$i-1]);
$line=$first_line.$pirep[$i];
回音$line.“
”; } }
您当前的代码是什么样子的?您能否为文本数据制定规则,以便我们了解任何给定的数据行是如何组成的?最大文件大小是多少?如果不太长,将整个文件合并成一个字符串并搜索它可能同样简单。同样,在最后,您仍然希望将文本文件的所有行与下一行连接起来?我感谢您的回复!我编辑了我的原始问题,包括我迄今为止编写的php脚本和一份给我带来问题的文本文件副本。请原谅我脚本中的任何新手错误,因为我是自学成才的。如果你看一下文本文件,你会发现,在每1KB的数据中,用于写入文本文件的可执行文件都会写入一行末尾,不管它在哪里。这会导致您在以23:59、02:44、05:14开头的行和“06:36块到块的持续时间”的行上看到的结果。理想的解决方案是删除该换行符,并将该行与该换行符后面的一行合并,从而显示“06:36块到块的持续时间:07:37”