Andü: String anhand von Muster auslesen

Beitrag lesen

Danke, ich hab das Problem wie folgt gelöst:

$string = 'www.ec-hasslau.de 66.196.91.121 - - [01/Sep/2005:04:20:39 +0200] "GET /robots.txt HTTP/1.0" 200 49 "-"';
$muster = 'www.ec-hasslau.de %IP% - - [%Date%] "%Method% %Request% %Protocol%" %ServerCode% %Bytes% "%Referer%"';

preg_match_all ("|%(.+)%|U", $muster, $muster_teile);
$muster_neu = preg_replace ("|%(.+)%|U", "(.+)", $muster);
preg_match ("|" . $muster_neu . "|", $string, $string_teile);
foreach ($muster_teile[1] as $key => $value)
{
  $abschluss[$value] = $string_teile[($key + 1)];
}

...ist das schon die optimale Methode oder gibt es da was schnelleres/kürzeres?
Außerdem ist auch die eckige Klamme im Muster noch ein kleines Problem, da sie ja bei Suchmustern eine funktionale Bedeutung hat. Kann man das anders als mit den \ umgehen (am besten so, dass das Muster wirklich so wie der String aussehen kann)?