我需要找出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";
}
}
然而,这并没有回应任何事情。
答案 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";
}
}