user1270150
user1270150

Reputation: 53

read file matching lines using array using php

I want to be able to read through a plain text file and match a number of lines without the need to iterate over the text file multiple times. I am passing in an array with a list of strings I would like to match, which ideally, I would like to put into an array.

I can achieve the desired result using the code below, but it necessitates the reading of the text file multiple times.

function readFile($line){
  $contents = file("test.txt");

  if(preg_match("/$line*/i", $val)){
    return($val);
  }
}

Ideally, I would like to do the following:

// pass an array to the funciton which will parse the file once and match on the elements defined.
$v = readFile(array("test_1", "test_2", "test_2", "test_3"));

// return an array with the matched elements from the search.
print_r($v);

Any help would be much appreciated.

Thanks all!

Upvotes: 0

Views: 229

Answers (2)

Barmar
Barmar

Reputation: 781310

$val = array();
foreach ($contents as $file) {
   foreach ($line as $l) {
      if (stristr($file, $l)) {
         $val[] = $file;
         break; // Don't need to check the other $line values
      }
   }
}

Upvotes: 1

Explosion Pills
Explosion Pills

Reputation: 191749

$val = array();
foreach ($contents as $file) {
   foreach ($line as $l) {
      if (stristr($file, $l) {
         $val[] = $file;
      }
   }
}

Even if you want to stick with preg_match, the "*" is unnecessary.

Upvotes: 0

Related Questions