Nach einigen Test und Fehlerkorrekturen nun folgende funktionierende Lösung:
$key = "id";
$str = "Hallo Welt\n"
."\r\n"
." id: 08154711 ";
// Wagenrücklauf entfernen
$replace_str = "\n";
$str = preg_replace('/\r\n|\r/', $replace_str, $str);
// Zeilenweise auslesen und in ein Array legen
$zeilen = preg_split("/\n/", $str);
for ($i=0; $i<count($zeilen); $i++) {
if (preg_match("/\s*id:\s+[0-9]+/i", $zeilen[$i])) {
// Ersetze Leerzeichen am Anfang und Ende durch NULL
$replace_str = "";
$str_neu = preg_replace("/(^\s)|(\s$)/", $replace_str, $zeilen[$i]);
// Ersetze alle Leerzeichen mit mehr als eins durch nur ein Leerzeichen
$str_neu = preg_replace("/\s{2,}/", ' ', $str_neu);
$str_neu = substr($str_neu, (strlen($key)+2), strlen($str_neu)-4);
break;
}
}
echo $str_neu;
Bleibt die Frage offen, ob es zu umständlich ist bzw. ob es eine einfachere Lösung gibt.