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...";
}