使用php匹配csv文件中从行到另一行的数据?

时间:2015-08-27 09:36:08

标签: php regex csv

我是php的新手。这有可能吗?脚本角色是在另一行中找到匹配但不在同一列上...

.csv文件

**first row**            **second row**         **third row** 

  This is for NNMM        NN/MM@000-45NNMM;1      2001
  AA/BB@000-45AABB;2      -----                   2002
  NN/MM@000-45NNMM;2      -----                   2003
  This is for XXYY        XX/YY@000-45XXYY;1      2004
  LL/QQ@000-45LLQQ;2      -----                   2005
  WW/KK@000-45WWKK;2      -----                   2006
  CC/DD@000-45CCDD;2      -----                   2005
  PP/SS@000-45PPSS;2      -----                   2006
  This is for AABB        AA/BB@000-45AABB;1      2007
  XX/YY@000-45XXYY;2      -----                   2008
  This is for PPSS        PP/SS@000-45PPSS;1      2009
  This is for CCDD        CC/DD@000-45CCDD;1      2010

在第一行:字符串中的最后一个字符为5个字段为“ 2 ”。(即AA / BB @ 000-45AABB; 2)

在第二行:字符串中的最后一个字符为5个字段为“ 1 ”。(即AA / BB @ 000-45AABB; 1)

现在我想做一个匹配的脚本,其中第一行在2ndrow中找到匹配..并显示找到匹配的第一行的数据...希望它有意义......

期望的输出

  This is for NNMM        NN/MM@000-45NNMM;1      2001
  This is for XXYY        XX/YY@000-45XXYY;1      2004
  This is for AABB        AA/BB@000-45AABB;1      2007
  This is for PPSS        PP/SS@000-45PPSS;1      2009
  This is for CCDD        CC/DD@000-45CCDD;1      2010

我已经启动了一个脚本,但仍坚持使用逻辑......

$file  = fopen('sample.csv', 'r');
echo "<table style='border: 2px solid black; text-align:left'>";
while (($line = fgetcsv($file)) !== FALSE) {  
    list( $row1, $row2, $row3) = $line;

        echo "<tr>";
        echo "<td>$row1</td>"; 
        echo"<td>$row2</td>"; 
        echo "<td>$row3</td>";
        echo "</tr>";       

}
echo "</table>"; 

1 个答案:

答案 0 :(得分:0)

使用do while()而不是抱歉无法为您编写代码

你必须使用if语句if($ row1 == $ row1){then do this}