我有另一个 csv 文件,我正在尝试做一个简单的单词过滤器。例如,我的 text.csv 文件如下所示:
name, age, hobbies
Tom, 8, "football, soccer, baseball, wii, star wars, books"
Bill, 9, "football, baseball, ice hockey, basketball"
Sue, 8, "baseball, soccer, volleyball, bicycles, skating"
Mike, 8, "basketball, music, guitar, cartoons, books"
Ella, 9, "soccer, basketball, softball, clothes, books"
Tim, 9, "football, baseball, basketball, wii, cartoons"
Steven, 8, "baseball, soccer, star wars, cartoons, books"
我想按第三列进行过滤。例如,如果我按“wii”过滤,我将收到发回的第 1 行和第 6 行:
Tom, 8, "football, soccer, baseball, wii, star wars, books"
Tim, 9, "football, baseball, basketball, wii, cartoons"
如果我按“wii”或“吉他”进行过滤,我将收到发回的第 1、4 和 6 行。
Tom, 8, "football, soccer, baseball, wii, star wars, books"
Mike, 8, "basketball, music, guitar, cartoons, books"
Tim, 9, "football, baseball, basketball, wii, cartoons"
我不擅长 php 和数组,但我尝试过使用 preg_match - 但不确定像 strpos 这样的东西是否更好。这是我所做的,但无法让它正常工作:
<?PHP
$firstWord = 'wii';
$secondWord = 'guitar';
$file = fopen('text.csv', 'r');
while (($line = fgetcsv($file)) !== FALSE)
{
list($name[], $age[], $hobbies[]) = $line;
if (preg_match($firstWord, $hobbies[0]) || (preg_match($secondWord, $hobbies[0]) {
echo $name . ',"' .$age . '",' .$hobbies . "<br> \n";
} else {
echo "A match was not found.<br> \n";
}}
?>
任何编码帮助将不胜感激。如果搜索不区分大小写也很好。谢谢阅读!