从CSV搜索数组

时间:2011-11-06 01:19:02

标签: php regex

我需要找出PHP中的CSV文件中是否找到某个字符串。该字符串可以在我的CSV列表中的任何字段中找到。

CSV列表如下:

"John Doe", "john.doe@gmail.com", "other information", "0800-0880880", "still some info"
"Other John", "other information"

等,以便我的CSV中的行不包含相同的信息。

我想知道是否在任何字段中都找到了任何字符串。

这就是我尝试过的(是的,我在PHP上非常糟糕):

<?php
$file_handle = fopen("csv.txt", "r");
$words = array('john', 'john.doe@gmail.com');
$words = array_map('preg_quote', $words);
$regex = '/'.implode('|', $words).'/i';

while (($line = fgetcsv($file_handle)) !== FALSE) {
list($name, $age, $hobbies) = $line;
if(in_array($regex, $line)) {
    echo "found";
}
}

然而,这并没有回应任何事情。

2 个答案:

答案 0 :(得分:0)

使用fgetcsv()功能,而不是重新发明轮子。 http://us3.php.net/manual/en/function.fgetcsv.php

数据使用in_array()后,查看每行是否包含搜索数据。

in_array()不使用正则表达式,它是一个字符串(甚至不是子字符串)。

答案 1 :(得分:0)

尝试使用以下内容替换while循环内部(已使用getcsv()):

foreach ($line as $elt) {
    if (preg_match($regex, $elt)) {
        echo "found match in: " . $elt . "\n";
    }
}