Rafael: Unterscheiden mit preg_match

Hallo Forum,

ich versuche gerade eine Layout-Datei nach Regular Expressions in ein Dokument umzuwandeln.

So habe ich zum Beispiel diese Abfrage:

$layout = preg_replace('/<!([a-zA-Z0-9äöüß\-_ ]+)\.?([0-9]+)?>/sm','<input type="text" name="$1" width="$2" />',$layout);

Die Layout-Datei sieht folgendermaßen aus:

<div class="fahrten">  
<!Wagen-1-Fahrer1>  
<!Wagen-1-Fahrer2>  
<!Fahrtnummer1>  
<!Fahrtext1>  
<!LEGU1.20> <!LEID1.20>  
<!Abladestelle1.20> <!Kofferanzahl1.20>  
<!Montageendtag1>  
<!Montageentzeit1>  
</div>

Nun frage ich mich, ob sich das mit preg_replace so handhaben lassen könnte, dass das Attribut width nur dann gesetzt wird wenn auch ein Wert $2 existiert.

Danke für jede Hilfe!

  1. Okay, falls ich das Genie bin, dass drauf gekommen ist, hier für die Nachwelt:

    einfach ne Funktion drauß machen, also

    $layout = preg_replace('/<!([a-zA-Z0-9äöüß\-_ ]+)\.?([0-9]+)?>/sm','<input type="text" name="$1" width="$2" />',$layout);

    Falls das für jeden klar war gratuliere ich dem emsigen googler...

    1. Peinlich... Neben dem Rechtschreibfehler auch noch vergessen die aktualisierte Zeile einzufügen.

      $layout = preg_replace('/<!([a-zA-Z0-9äöüß\-_ ]+)\.?([0-9]+)?>/',replace('$1','$2');