dedlfix: Regulärer ausdruch grefit nicht?!

Beitrag lesen

Hi!

$bb = preg_replace('/[color=([^ ]+).*](.*)[/color]/', '<span style="color:$1;">$2</span>',  $bb);
$bb = preg_replace('/[code      ]+).*](.*)[/code]/', '<span id="$1">$2</span>', $bb);

... solltest du sehen, dass du zu viel entfernt hast, auch wenn dir die Bedeutung der Regexp-Zeichen noch nicht klar ist.
Ich bin mir nicht ganz sicher wo du das Beispiel jetzt her hast, aber wie mir scheint frisst dieses Forum code stücke ^^

Das war aus deinem Originalposting. Es ist richtig, dass dieses Forum hier [ code] selbst verwendet und deshalb ein Problem damit hat, wenn das jemand als Inhalt verwenden will und nicht nur zur Code-Auszeichnung. Außerdem gibt es keine Möglichkeit der Maskierung, so dass keine Interpretation stattfindet (hat mir grad eben der Entwickler bestätigt). Man kann lediglich ein Leerzeichen oder ähnliches zwischen [ und code scheiben. Aber wenn du in die Antwort-Textarea in den zitierten Text schaust, da steht das vom Poster geschriebene Original unverändert (geht natürlich nicht mehr, wenn das später Posting im Archiv gelandet ist). Wie dem auch sei ...

$bb = preg_replace('/[color=([^ ]+).](.)[/color]/', '<span style="color:$1;">$2</span>', $bb);

$bb = preg_replace('/[ code=([^ ]+).](.)[/code ]/', '<span>$1</span>', $bb);

  
... so sieht das schon eher aus, wie es sinnvoll ist. Die Frage ist jetzt nur, warum du nun im Ersatztext das id=... nicht mehr haben willst? Im Ausgangsposting war es noch drin. Und wenn es weg soll, ändert das aber nichts an der Nummerierung der Gruppierungen im Regulären Ausdruck (Gruppierungen werden mit runden Klammern eingeschlossen). Die erste Gruppe beginnt gleich nach dem ersten code= und enthält die Sprache. Die zweite Gruppe (.\*) enthält den Teil zwischen den beiden code-Tags, also den Programmcode, den du haben willst. Also musst du immer noch $2 nehmen, auch wenn du $1 (Sprachname) nicht mehr brauchst.  
  
Wenn dich das jetzt noch nicht ans Ziel führt, beschreibe bitte mal genau den aktuellen Stand.  
  
  
Lo!