Annette: preg_replace

Hii,

Es ist ein wenig schwer zu erklären, aber ich werde mir mühe geben!
Ein PHP Programm soll ein Template aufrufen und dessen Variablen ersetzen.
Das komplizierte am Template ist, dass die Variable nicht einfach nur eine %variable% ist sondern eine %variable__123% mit einem default-value.
Diese Werte sollen je nach dem rabattiert werden.

Also wir haben:

programm.php

ruft Template auf

Ersetz Varibalen

template.tmpl
%normale_variable%
%noch_eine_normale_variable%
%spzeial_variable_mit_default_wert__123%
%spzeial_variable_mit_default_wert__456%
%spzeial_variable_mit_default_wert__789%

Ohne jetzt weiter auf Details einzugehen nun die eig. Fragestellung:

Wie muss mein Suchmuster aussehen um "%spzeial_variable_mit_default_wert__" zu finden, jedoch nach dem Berechnen "%spzeial_variable_mit_default_wert__*%" mit einem $neuen_wert zu ersetzen?
Wofür der Stern steht ist ja denke ich mal klar :-)

Vielen Dank schon mal!!
Annette

  1. Ich habs!

    Cool.. war ja einfacher wie ich dachte!!

      
    <?  
    $rabatt = 10;  
    function preg_callback($result){  
    	global $rabatt;  
      
    	return $result[1]/100*$rabatt;  
      
    }  
      
    $zeichenkette = 'Dat is n %spezial__456% Test Dat is n %spezial__789% Test';  
    $suchmuster = '/%spezial__(.+?)%/i';  
    echo preg_replace_callback($suchmuster, 'preg_callback', $zeichenkette);  
    ?>  
    
    
    1. Cool.. war ja einfacher wie ich dachte!!

      Ist es nicht.

      $suchmuster = '/%spezial__(.+?)%/i';

      (.+?) matcht auf wesentlich mehr als nur eine 3[sic?]-stellige Dezimalzahl und ist zudem gierig.

      1. jo kenn mich nicht soo gut damit aus.
        was soll ich anstatt (.+?) nehmen??

        Annette

      2. Hi,

        $suchmuster = '/%spezial__(.+?)%/i';
        (.+?) matcht auf wesentlich mehr als nur eine 3[sic?]-stellige Dezimalzahl und ist zudem gierig.

        Nein, gierig ist es definitiv nicht.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. Nein, gierig ist es definitiv nicht.

          Ja du hast recht - Denkfehler, ist andersrum:

          However, if a quantifier is followed by a question mark, then it becomes lazy, [...]

  2. Wie muss mein Suchmuster aussehen um "%spzeial_variable_mit_default_wert__" zu finden, jedoch nach dem Berechnen "%spzeial_variable_mit_default_wert__*%" mit einem $neuen_wert zu ersetzen?

    %spzeial_variable_mit_default_wert__ wörtlich

    gefolgt von einer Ziffernfolge (0 oder 1 mal)
    bzw gefolgt von einer Ziffer 0 oder mehrmals

    gefolt von % wörtlich

    Wofür der Stern steht ist ja denke ich mal klar :-)

    Dir ist es scheinbar nicht klar, der Stern (Asterisk) ist der 0-oder-mehrmals-Quantifikator: Meta-characters