Hallo,
ich habe mehrere Dateien, die von verschiedenen Autoren stammen können.
Diese sollen zentral zusammengeführt werden, wofür ich von jedem Autor
- eine Version der Datei
- eine Beschreibung der Datei
- Inhaltsstichwörter
benötige.
Diese Informationen sollen in den Dateien transportiert werden, bei denen es sich um Smarty-Templates handelt. Sinnvollerweise als Smarty-Kommentare, damit die Templates trotz der enthaltenen Infos weiter ihren Dienst verrichten.
Verpackt sind die Informationen wie folgt:
{*version=2.0*}
{*description=das ist eine beschreibung*}
{*key=stichwort eins*}
{*key=stichwort zwei*}
{*key=stichwort drei*}
Ausgelesen werden sollen sie per PHP preg_match(_all):
$pattern = "/\{\*description=(.+)\*\}/i";
if(0 != preg_match($pattern, $file, $matches)) {
$description = $matches[1];
} else {$error = true;}
$pattern = "/\{\*key=(.+)\*\}/i";
if(0 != preg_match_all($pattern, $file, $matches, PREG_PATTERN_ORDER)) {
$infos = $matches[1];
} else {$error = true;}
Beide Suchmuster bringen auch das gewünschte Ergebnis:
das ist eine beschreibung
Array ( [0] => stichwort eins [1] => stichwort zwei [2] => stichwort drei )
Jedoch könnte eine Beschreibung mehrzeilig sein. Ein
{*description=das is
t eine beschreibung*}
im Template lässt die Funktion preg_match nichts mehr finden.
Eine Abänderung des entsprechenden Suchmusters auf
/^\{\*description=(.+)\*\}$/i
bringt auch nicht den gewünschten Effekt.
Kann mir jemand einen Denkanstoß geben, wie ich das Muster ändern muss, damit der gewünschte Effekt eintritt?
Vielen Dank (: