【发布时间】:2011-01-23 20:54:26
【问题描述】:
我有另一个 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";
}}
?>
感谢任何编码帮助。让搜索不区分大小写也很好。感谢阅读!
【问题讨论】: