Basic:
// $search contains query
// remove non-alphanumeric characters from search query
$search = preg_replace('[^a-zA-Z\d\s:]','',$search); 
// Get unfiltered file into an array
$original_lines = file('file.txt');
$num_matches = 0;
foreach ($original_lines as $line) {
      if(strpos(preg_replace('[^a-zA-Z\d\s:]','',$line), $search) !== false){
         $num_matches++;
         echo $line;
      }
}
if (!$num_matches){
   echo "No matches.";
}
Experimental, and probably memory and processing inefficient:
// $search contains query
// remove non-alphanumeric characters from search query
$search = preg_replace('[^a-zA-Z\d\s:]','',$search); 
// Get unfiltered file into an array
$original_lines = file('file.txt');
// Read entire file to string, filtering non-alphanumeric characters
$filtered_lines = preg_replace('[^a-zA-Z\d\s:]','',implode("\n",$original_lines); 
// Count the matches
if ($num_matches = preg_match_all($search,$filtered_lines,$matches)){
   // Convert back to array with replacements
   $filtered_lines = explode('\n',$filtered_lines); 
   $found_lines = 0; $line_index = -1;
   foreach ($filtered_lines as $fline) {
      $line_index++;
      if(strpos($fline, $search) !== false)
      {
         $found_lines++;
         echo $original_lines[$line_index];
      }
      if ($found_lines == $num_matches){
         break; // No more matches, so stop processing additional lines
      }
   }
}
else{
   echo "No matches...";
}