使用PHP,如何从以特定值开头的文本文件中回显一行?

mob*_*lus 1 php

让我们说文本文件"data1.txt"包含:

56715||Jim||Green||19  
5678||Sara||Red||92    
53676||Mark||Orange||6  
56787||Mike||Purple||123  
56479||Sammy||Yellow||645  
56580||Martha||Blue||952
ect...
.
.  
Run Code Online (Sandbox Code Playgroud)

我想只回应以"5678 ||"开头的行."5678"是确切的$ refVal或参考值.该行应显示如下:

My name is: $nameVar
My color is: $colorVar
My number is: $numVar
Run Code Online (Sandbox Code Playgroud)

谢谢...

Mar*_*c B 5

$fh = fopen('data1.txt', 'r') or die('Unable to open data1.txt');
while($line = fgetcsv($fh, 0, '||')) {
   if ($line[0] == 5678) {
       echo <<<EOL
My name is: $line[1]
My color is $line[2]
My number is $line[3]
EOL;
       break; // if there's only ever one '5678' line in the, get out now.
   }
}
fclose($fh);
Run Code Online (Sandbox Code Playgroud)

备用版本,如下面Jared所建议的那样.可能会更快,因为它只在实际匹配的行上创建数组,而不是像fgetcsv版本那样对每行进行创建.

$fh = fopen('data1.txt', 'r') or die('Unable to open data1.txt');
while($line = fgets($fh)) {
   if (strpos($line, '5678||') === 0) { // only if right at start of string
        $data = explode('||', $line);
        echo <<<EOL
my name is blah blah blah 
EOL;
        break;
   }
}
Run Code Online (Sandbox Code Playgroud)