2015-08-26 88 views
0

我真的是一個PHP新手。我有這樣做的問題..使用PHP從csv文件中查找字符串?

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

sample.csv

 **inbound**     **outbound**   **date**  
    IN/[email protected]/000000163-000000as  1/12/2014 
    IN/[email protected]     NOT/000000141-00000043  1/14/2014 
    IN/[email protected]     OUT/000000164-000000jk  1/15/2014 

是能夠顯示其中2ndrow是先從「NOT」和一些炭前的所有列「 - 」是141 ???

輸出:

IN/[email protected]    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>"; 

是可以顯示其中2ndrow是先從「NOT」和炭前數所有列「 - 」是141 ???

+0

您可以將CSV記錄轉換成一個數組,像這樣:http://stackoverflow.com/questions/7502370/converting-csv-to-array,然後檢查數組中的字符串中包含的值等所以:http://stackoverflow.com/questions/19445798/php-check-if-string-contains-a-value-in-array – nomistic

回答

1

list()...語句後插入

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

應該足夠了。

但是,您的數據看起來不像逗號分隔,而不是製表符分隔。也許你在開始討論行時是指專欄?

+0

在NOT/000000141-00000043 ..如何獲得「 - 」之前的字符連字符?即141' – Bee

+0

''preg_match('/ \\ d * - /',$ outbound,$ matches)'會在'$ matches [0]'中的連字符之前給出所有數字。 – syck

+0

先生...你可以請在上面的代碼中顯示它... – Bee

0

您可以使用strpos()

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

這將產生'0',這將被視爲虛假。 – syck

+0

in NOT/000000141-00000043 ..如何獲得「 - 」之前的字符串?即141 – Bee

+0

@syck你是對的。我更新了例子。 – Tomasz

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 
?> 
+0

@Bee:我想我使用正確的字符串比較,你需要。如果還有其他更新, –

+0

哇......謝謝你......如果我問另一位先生 – Bee