mi sembra normale...
con
Codice PHP:
array ("mel(a|e)","per(a|e)","''"); 
tu stai dicendo che le parole proibite sono
"mel(a|e)" e "per(a|e)"
quindi quando poi fai il confronto a meno che tu non abbia scritto proprio "mel(a|e)" non lo riconoscerà


forse tu volevi usare delle espressioni regolari, quindi dai uno sguardo qui:
http://php.net/manual/en/function.preg-match.php