Mailinglisten-Archive |
Hi, ich habe eine regexp, die ähnlich wie PHPLIBs Template-Klasse nach dem Muster {befehl(param1:wert1; param2:wert2;)} sucht. Also z.B. $content = "{set(blubb:wert1;)} blabla {get(blubb: ;)}"; Nun gibt es einen Befehl, der nennt sich set: {set(blubb:wert1;)} ... der in meiner Funktionsklasse das Array $configvar aus den persistant slots setzt, also: class a { var $configvar; function set() { // vereinfacht geschrieben, in Wirklichkeit bekommt // set ein Array mit paramX/wertX-Hashes überliefert // und setzt dann configvar entsprechend. $configvar["blubb"] = "wert1"; } function get() { print "configvar[blubb] = ".$this->configvar["blubb"]; } } Weiterhin gibt es da den Befehl get(), der so aufgerufen wird: {get(blubb: ;)} An dieser Stelle sollte eigtl. der Wert von $this->configvar["blubb"] ausgegeben werden. Tut es aber nicht, weil preg_match() offensichtlich "von hinten" anfängt, nach den gesuchten Strings zu suchen, d.h. zuerst wird der Befehl get aufgerufen -- logisch, dass nix ausgegeben wird, weil $this->configvar["blubb"] nichts enthält. Erst danach stößt preg_match() auf {set(blubb:wert1;)} und führt die Methode set() aus, die brav $this->configvar["blubb"] füllt. Frage: wie kann ich das so "umkehren", dass preg_match auch wirklich am Anfang von $content anfängt zu suchen und zuerst den set-Befehl findet und danach den Get-Befehl? -- <?php class new_media_development { var $url="http://www.rent-a-phpwizard.de/"; var $fon="0931/7843792"; var $fax="0931/7843795"; } /* Björn Schotte, "Mr. PHP" */ ?>
php::bar PHP Wiki - Listenarchive