我正在尝试搜索某些csv文件中的值,并显示包含该搜索字词的所有行,并使用以下代码:
<?php
foreach (glob("csv/*.csv") as $file) {
$filter = explode('/', $file);
$filter = explode('.',$filter[1]);
$filter = $filter[0];
$rowcount = 0;
$file = fopen($file, "r");
while (($artext = fgetcsv($file)) !== false) {
$line = ++$rowcount;
foreach($artext as $value){
if(stristr($value,'marketing')){print_r($artext);echo "<br />";}
}
}
fclose($file);
}
?>
但是,一行包含多次“营销”一词,因此该行显示4次(在本例中)。
如何确保每行只显示一次?
此示例中的行(但发生这种情况的行数更多):
Array(
[0] = > http: //www.marketingmax.nl/
[1] => Marketing Max
[2] =>
[3] => username
[4] => password
[5] => Vergeet niet uit te loggen bij het beëindigen van je sessie.
[6] => Artikels over marketing, marketingcommunicatie, reclame
[7] => Kantienberg
[8] => BEM
[9] => marketing
[10] =>
[11] =>
[12] => Kluwer
[13] =>
[14] =>
[15] => Databank
[16] =>
[17] =>
[18] =>
)
更新:现在完整的工作代码是:
<?php
foreach (glob("csv/*.csv") as $file) {
$filter = explode('/', $file);
$filter = explode('.',$filter[1]);
$filter = $filter[0];
$rowcount = 0;
$file = fopen($file, "r");
while (($artext = fgetcsv($file)) !== false) {
$line = ++$rowcount;
if(stristr(implode("|", $artext),'marketing')){
print_r($artext);
}
}
fclose($file);
}
?>
答案 0 :(得分:0)
您可以使用:
while (($artext = fgetcsv($file)) !== false) {
$line = ++$rowcount;
if (array_search('marketing', $artext) !== false)
print_r($artext);
}
如果您想要不区分大小写的搜索,请使用array_map
while (($artext = fgetcsv($file)) !== false) {
$line = ++$rowcount;
if (array_search('marketing', array_map('strtolower',$artext)) !== false)
print_r($artext);
}
答案 1 :(得分:0)
您可以将整个数组加入一个字符串,然后查找匹配项。
if(stristr(implode("|", $artext),'marketing'))