Mailinglisten-Archive |
Hallo Liste!
Ich bin auf der Suche nach einer Lösung für folgendes Problem:
Ich bekomm über das PHP CLI einen Befehl, z.B. "list /home"...
Dann hab ich spezielle Userfunktionen in PHP definiert, die z.B. usr_list()
heißen.
So und jetzt hab ich noch den Zusammenhang in einem Array definiert:
$def = array(
// USR Func, Pattern, Argument
array("usr_dir","°dir (.+)°",1),
array("usr_cd","°cd (.+)°",1)
);
Nun brauch ich eine Funktion, die praktisch den Befehl von dem CLI mit den
Regexps aus $def vergleicht und dann dementsprechend Funktionsnamen
("usr_*") plus eventuell ein Übergebenes Argument zurückgibt.
Ich hab mir das schon mit einer foreach-Schleife gebastelt:
$def = array(
array("dir","°dir (.+)°",1),
array("cd","°cd (.+)°",1)
);
foreach ($def as $d) {
if (preg_match($d[1],$arg,$matches)) {
$return = array($d[0],$matches[$d[2]]);
break;
}
}
Funktioniert auch.
Nur ist das wohl nicht sehr glücklich, wenn ich viele Befehle in $def
definiert hab.
Gibt’s denn sozusagen ein Gegenteil von preg_grep(), bei dem ich einen
Pattern-Array angeben kann und ich den Array-Index für den Pattern
zurückbekomm, der matcht?
Hoffe ich hab das einigermaßen einleuchtend beschrieben...
Bin dankbar für jeden Tipp, wie das einfach realisiert werden könnte!
Gruß,
Andi
php::bar PHP Wiki - Listenarchive