phpbar.de logo

Mailinglisten-Archive

[php] preg_grep();

[php] preg_grep();

Andreas Brandl mail at andreas-brandl.de
Sam Feb 21 21:25:58 CET 2004


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