PlayersGarden: String kann auch noch anders aussehen.

Beitrag lesen

Hast Du ihn mal getestet?

Dein $pattern hat mir folgenden Fehler ausgespuckt: Unmatched parentheses

[A-Za-z0-9]+ hört sich nicht so an als würde es auf viel html matchen.

Ja - ich hatte den Such-String in der Zeit schon mehrfach wieder verändert.

Aktuelles Probebeispiel:

  
$string = '<li>{LG:TEASER_TEXT_1|Das ist ein Test|12:42:31|5|˙·٠•● FooBar ●•٠·˙}</li>'  
$pattern = '/\{LG:(?<identifier>[\w]+)\|?(?<elements>.*?)?\}/s';  
$count = preg_match_all($pattern, $string, $matches, PREG_SET_ORDER);  
var_dump('<pre>', $matches, '</pre>');  

Das Vardump gibt da aus:

array(5) {
  [0]=>
  string(79) "{LG:TEASER_TEXT_1|Das ist ein Test|12:42:31|5|˙·٠•● FooBar ●•٠·˙}"
  ["identifier"]=>
  string(13) "TEASER_TEXT_1"
  [1]=>
  string(13) "TEASER_TEXT_1"
  ["elements"]=>
  string(60) "Das ist ein Test|12:42:31|5|˙·٠•● FooBar ●•٠·˙"
  [2]=>
  string(60) "Das ist ein Test|12:42:31|5|˙·٠•● FooBar ●•٠·˙"
}

Jetzt kann ich auf elements ein explode machen und bin schon mal einen Schritt weiter.

Meine vorigen $pattern haben einfach nicht funktioniert. Ich denke das dort schon jedes der '|foo_bar' Elemente rausgefiltert wurde, nur hat das neustgefundene das letzte im Array überschrieben.

In der Datenbank steht jetzt als identifier: TEASER_TEXT_1

Und TEASER_TEXT_1 hat zum Beispiel den deutschsprachigen Wert:

"Was haben wir denn hier: %1 um %2 und es wurde %3 von %4 geändert."

Dabei soll dann später folgend ersetzt werden:
%1 - Das ist ein Test
%2 - 12:42:31
%3 - 5
%4 - ˙·٠•● FooBar ●•٠·˙

Aber das sind dann extra Funktionen. Ich wollte nur deutlich machen wofür ich das Brauche. Sprich ist das erste hinter {LG: ein Platzhalter für einen Text, welcher auch Platzhalter enthalten kann, welche dann aber mit %1 gekennzeichnet sind und die später dann mit den Elementen hinter dem ersten Trenner '|' liegen.

Ich weiß nicht wie ich es besser beschreiben kann.