phpbar.de logo

Mailinglisten-Archive

[php] preg_match() - Reihenfolge veraendern?

[php] preg_match() - Reihenfolge veraendern?

=?iso-8859-1?Q?Bj=F6rn_Schotte?= bjoern_(at)_baer.main.de
Wed, 12 Jul 2000 21:00:43 +0200


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