Это очень сложная задача, решается только при соблюдении определённых правил.
Если ключевое слово стоит всегда первым, тогда можно разбить explode по пробелу, очистить от предлогов а потом каждое слово присоединить к 0 элементу массива, но будет "батончик орехами" предлог-то вы потеряете. А предлог можно сохранить присоединив к нему следующий элемент массива. Но если будет фраза "Батончик ела девочка с мамой" то одним из вариантов выйдет "Батончик с мамой" :))))