Skript für Sprachsteuerung vereinfachen

Hallo Zusammen!
Ich arbeite momentan an einer Sprachsteuerung für meine Haussteuerung.
Ein Teil meines selbstgebauten Skripts sieht so aus:

//Licht Flur OG
if(stripos($voice, "Licht") !== false && stripos($voice, "Flur") !== false && (stripos($voice, "ein") !== false || stripos($voice, "an") !== false))
{
HM_WriteValueBoolean(19063 /*[Obergeschoss\Flur\Deckenlicht Flur OG]*/, "STATE", true);
$ausgabe = "Ich habe das Licht im Flur eingeschaltet";
}

Die String-Variable $voice enthält den aktuellen Sprachbefehl. Als nächstes wird nach Stichworten im String gesucht. Kommen diese Worte in einer bestimmten Und-Oder-Logik darin vor, wird ein Schaltbefehl ausgelöst und eine „Antwort“ in die Variable $ausgabe geschrieben.

Nun möchte ich nicht für jeden Sprachbefehl so eine Menge Programmcode schreiben. Dies wird nämlich zu unübersichtlich.
Mir kam die Idee alles in eine Funktion zu verpacken, nur leider fehlt mir jeglicher Anhaltspunkt für eine Lösung.

Licht("Licht&Flur&(ein|an)",19063,true,"Ich habe das Licht im Flur eingeschaltet");

function Licht($bedingungen,$hm_id,$hm_wert,$ausgabe)
{
???
}

Kann mir jemand weiterhelfen?