0

I know this question has been asked before but my problem is different because I need to return the specific rows after a search.

Basically, this is the scenario:

I need to search a CSV file for a specific word/string in the name column and then IF the word/string is found I need to get the row[4] and row[5] and print them in the PHP.

The CSV looks like this:

"id","ident","type","name","latitude_deg","longitude_deg","elevation_ft"
6523,"00A","heliport","Heliport",40.07080078125,-74.93360137939453,11,

So basically, I need to search by name and if found, return the latitude_deg,longitude_deg.

This is what I have so far... However, this searches the ENTIRE CSV file which makes it slightly slower and it only returns whether the CSV file contains the string/word or not...

$search      = "Heliport";
$lines       = file('myCsv.csv');
$line_number = false;

while (list($key, $line) = each($lines) and !$line_number) {
   $line_number = (strpos($line, $search) !== FALSE);
}

if($line_number){
    echo "Results found for " .$search
} else {
    echo "No results found for $search";
}

Could someone please advice on this issue? Thanks in advance.

1

1 Answer 1

1

fgetcsv is a good tool for this, it reads a CSV line and breaks it into an array.

$search = 'Heliport';
if (($fp = fopen("myCsv.csv", "r")) !== false) {
    while (($row = fgetcsv($fp)) !== false) {
        if($row[3] === $search) {
            echo 'Found ' . $row[3] . ': ' . $row[4] . ', ' . $row[5] . "\n";
        }
    }
    fclose($fp);
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.