ho +/- capito, anche se il codice fa, scusa se te lo dico, veramente ribrezzo

questa riga è da suicidio

if (eregi("[a-zA-Z0-p_-]*.html",$file) or eregi("[a-zA-Z0-p_-]*.htm",$file)or eregi("[a-zA-Z0-p_-]*.php",$file)or eregi("[a-zA-Z0-p_-]*.txt",$file)){

pensa che poteva esseer scritta usando le preg, che sono infinitamente più veloci, e poteva essere una sola oltre al fatto che è "logicamente" errata ^^

if (preg_match('/[a-z0-9]+\.html|htm|php|txt/i', $file)) {

questa è corretta, cmq non l'ho provata, quindi potrebberò esserci errori...

a parte questo devi mettere qui il check...

if (preg_match('/[a-z0-9]+\.html|htm|php|txt/i', $file) || strtolower($file) == 'search.php') {

cmq al posto della preg, forse, poteva anche essere usato glob, che è estremamente più veloce ^^

http://it.php.net/glob

$array = glob("/path/to/images/{*.html,*.htm,*.php,*.txt}", GLOB_BRACE);

cmq non ha molto senso cercare dentro i file php, perché i file php contengono codice php