Ad ogni modo trovo che il codice postato sia:
1) inefficiente
2) poco utile
3) controproducente

e spiego il perchè:
1) inefficiente perchè fa N "ereg", una per ogni elemento dell'array, quando potrebbe magari farne una
2) poco utile perchè cerca specifiche parole scritte in uno specifico modo, se si usa un'altra rappresentazione di cose come "<" che succede?
3) controproducente perchè tu non potrai usare in una query string le parole "on", "txt", "alter" e tante altre anche in contesti in cui sarebbe perfettamente lecito.

nella url (1) quel codice non troverà nessun errore, farà quindi 38 volte il controllo con la regex (una per ogni elemento dell'array) perdendo solo tempo.

nella url (2a) non ci sono errori trovati dal tuo codice però se il server non è settato bene si può avere accesso a qualche file in sottocartelle in cui non si dovrebbe accedere

nella url (2b) non ci sono errori trovati dal tuo codice però sei soggetto ad attacchi XSS

nella url (3) non c'è niente di cattivo, magari hai un modulo di ricerca che filtra i campi in un determinato modo, ma quel codice bloccherà tutto perchè ti darà errore sul termine "from"


credo che quel codice sia completamente inutile