使用php从csv文件中查找字符串中的字符?

时间:2015-08-26 15:32:43

标签: php csv

我真是php的新手。我这样做有问题..

我有sample.csv文件包含3行:入站(第1行),出站(第2行)和日期(第3行)。

sample.csv

      **inbound**                   **outbound**            **date**       
  IN/15@001234                  OUT/000000163-000000as     1/12/2014
  IN/15@004323                  NOT/000000141-00000043     1/14/2014
  IN/15@005555                  OUT/000000164-000000jk     1/15/2014

是否可以显示第二行以“NOT”开头的所有列,以及字符“ - ”之前的数字是141 ???

输出:

IN/15@004323                NOT/000000141-00000043     1/14/2014

我不知道是否有可能......请帮帮我.. 我有一个代码如下。但它只打开csv文件...

$file  = fopen('Master.csv', 'r');

echo "<table style='border: 2px solid black; text-align:left'>";
while (($line = fgetcsv($file)) !== FALSE) {  
    list($inbound, $outbound, $date) = $line;          

        echo "<tr>";
        echo "<td>$inbound</td>"; 
        echo"<td>$outbound</td>"; 
        echo "<td>$date</td>";
        echo "</tr>"; 

}
echo "</table>";

是否可以显示第二行以“NOT”开头的所有列,以及字符“ - ”之前的数字为141 ???

3 个答案:

答案 0 :(得分:1)

插入

if (preg_match('/^NOT/', $outbound)) continue;

list()...语句之后就足够了。

但是您的数据看起来不像是以逗号分隔,而不是以制表符分隔。也许你在开头讨论行时是指列?

答案 1 :(得分:0)

您可以使用strpos()

if ( strpos($outbound, 'NOT') !== false ) {
// "NOT" WORD FOUND IN STRING
}

答案 2 :(得分:0)

试一试。这将使用逗号分隔的csv文件。

echo "<table border = 1><tr><td>first</td><td>second</td><td>third</td></tr>"; //creating table
$handle = fopen('fe.csv', "r");     //open csv file 

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)   //read csv file row by row
{
    //check both NOT and 141- in the string
    if ( (strpos($data[1], 'NOT') !== false ) && (strpos($data[1], '141-') !== false )) {
        //add required field data to table
        echo "<tr>";
        echo "<td>".$data[0]."</td>"; 
        echo"<td>".$data[1]."</td>"; 
        echo "<td>".$data[2]."</td>";
        echo "</tr>"; 
    }
}
echo "</table>"; //close table
?>