У меня есть другой 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";
}}
?>
Любая помощь в кодировании приветствуется. Также было бы неплохо, чтобы поиск не зависел от регистра. Спасибо за чтение!