2015-11-15 27 views
3

我有一個csv文件(半冒號分隔),並將其像這樣進入php;類似於csv-file的WHERE子句

$file_handle = fopen("data.csv", "r"); 
while (!feof($file_handle)) { 
    $line_of_text = fgetcsv($file_handle, 0, ";"); 
    print $line_of_text[0] . $line_of_text[1] ((...etc)); 
    } 
fclose($file_handle); 

我想打印/回波含有特定關鍵字所有行。我希望我可以彈出類似的東西:

"SELECT file_handle WHERE line_of_text[3] LIKE '%keyword'" 

但是,據我所知,WHERE子句是僅mySQL?

這一因此,任何漂亮的祕訣是最歡迎:-)

編輯:
我的CSV看起來是這樣的:
ID;日期;名字;姓;值(整數);值(整數)
94; 15-11-14;約翰;史密斯; 329,00; 500
95; 15-11-15;詹姆士;瓊斯; 211,00; 600

+0

你要找的功能是[strpos(http://php.net/manual/en/function.strpos.php) 。 – wogsland

+0

@wogsland - 「找到字符串中第一次出現子字符串的位置」但我需要所有的出現? – morganF

+0

也許我應該加上;我需要**回顯所有包含關鍵字(-s)的行** – morganF

回答

0

嘗試in_array功能過濾數組$ line_of_text

<?php 
$row = 1; 
$your_value_to_search = 'your_value'; 
if (($handle = fopen("data.csv", "r")) !== FALSE) { 
    while (($line_of_text = fgetcsv($handle, 1000, ",")) !== FALSE) { 
    if (in_array($your_value_to_search, $line_of_text)) { 
     $num = count($line_of_text); 
     for ($c=0; $c < $num; $c++) { 
      echo $line_of_text[$c] . "<br />\n"; 
     } 
     } 

     $row++; 

    } 
    fclose($handle); 
} 
?> 
+0

到目前爲止感謝(尚未爲我工作)。 for $ c是我的關鍵字(-s)所在的csv-set中的特定「列」?爲什麼1000年價值在fopen? – morganF

+0

用於打開的1000用於指定最大行長度僅用於樣本。我已經更新了答案。一塊失蹤... – scaisEdge

+0

更好:-)現在我可以從第一個單元格中搜索並打印精確匹配(參見上面的csv示例),以便我可以得到94和該行的其餘部分。如果我有兩行我會打印兩次。但我無法從其他單元格獲得點擊。搜索'約翰'沒有獲得點擊?是否有某種**通配符**我可以使用,所以搜索'9%'會產生94和95? – morganF