$aw=preg_split('/(^|[\W]+)([\w]{1,3}([\W]+|$))*/is', $str, -1, PREG_SPLIT_NO_EMPTY);
2. $mcnt=preg_match_all('/[\w]{4,}/is', $str, $aw);
$aw=((int)$mcnt>0 && is_array($aw))?$aw[0]:array();
// где-то в начале скрипта или при подгрузке стоп-листа из хранилища
$stop_hash=array_flip($stop_list);
// и далее во всех нужных местах поиск проводить таким образом:
if (array_key_exists($x, $stop_hash))...