Filter a csv file by a word or text using php

前端 未结 3 1372
猫巷女王i
猫巷女王i 2021-01-03 14:36

I have another csv file where I am trying to do a simple word filter. For example, my text.csv file looks something like this:

name, age, hobbies
Tom, 8, \"         


        
3条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2021-01-03 15:02

    You're close. Something like this should work:

    $file  = fopen('text.csv', 'r');
    
    // You can use an array to store your search words, makes things more flexible.
    // Supports any number of search words.
    $words = array('wii', 'guitar');    
    // Make the search words safe to use in regex (escapes special characters)
    $words = array_map('preg_quote', $words);
    // The argument becomes '/wii|guitar/i', which means 'wii or guitar, case-insensitive'
    $regex = '/'.implode('|', $words).'/i';
    
    while (($line = fgetcsv($file)) !== FALSE) {  
        list($name, $age, $hobbies) = $line;
    
        if(preg_match($regex, $hobbies)) {
            echo "$name, $age, $hobbies
    \n"; } }

提交回复
热议问题