我有另一个csv文件,我试图做一个简单的词过滤器。例如,我的text.csv文件看起来像这样:使用php过滤一个csv文件的文字或文本使用php
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";
}}
?>
任何编码帮助表示赞赏。搜索不区分大小写也是很好的做法。谢谢阅读!
谢谢,我得到了一个'{'错误,但后来我改变了最后一行,在preg_match的末尾添加了第二个')'。非常棒,感谢Tatu!我该如何让搜索大小写不敏感,以便搜索“吉他”还是“吉他”并不重要? – Thomas 2010-03-04 21:35:45
@Thomas:'$ regex ='/'。implode('|',$ words)。'/ i';'使用不区分大小写的标志** i ** – jasonbar 2010-03-04 22:03:47
非常感谢jasonbar。你们都大大帮助了我。非常感激。 – Thomas 2010-03-04 22:31:36