in realtà...sarebbe corretto fare
if (preg_match('/.+\.html|htm|php|txt/i', $file) || strtolower($file) == 'search.php') {
sato che devono essere cercati TUTTI i file che hanno quelle estensioni, e siccome su file system...ci stanno solo estensioni valide...beh è corretto far cosima a questo punto, effettivamente, non ha senso una preg ^^, basta anche una semplice substr per verificare l'estensione del file ^^