$pattern = '/\{LG:(?<identifier>[\w]+)(\|[A-Za-z0-9]+)*\}/';
$string = '<li>{LG:TEASER_TEXT_1|Foo|Bar|FooBar}</li>';
preg_match_all($pattern, $string, $matches, PREG_SET_ORDER);
var_dump('<pre>', $matches, '</pre>');
Liefert folgendes Array:
array(4) {
[0]=>
string(33) "{LG:TEASER_TEXT_1|Foo|Bar|FooBar}"
["identifier"]=>
string(13) "TEASER_TEXT_1"
[1]=>
string(13) "TEASER_TEXT_1"
[2]=>
string(7) "|FooBar"
}
Jetzt ist die Frage - wieso nimmt er nur das letzte '|FooBar' Element und nicht alle? Wird das Value evtl. immer überschrieben?