echo $begrüßung;
am Ende jeder "Zeile" scheint auf irgendeine Weise ein Leerzeichen aufzutauchen, wo doch gar keins drin sein sollte.
Hat vielleicht jemand ne Idee wie das Leerzeichen da reinkommt?
Ich nicht, denn im Hellsehen bin ich eine Niete.
Du könntest statt wild rumzuraten einfach genau nachsehen, was du wirklich für Daten hast. Dafür eignet sich var_dump() ganz gut, weil es auch die Länge des Strings angezeigt und notfalls die Zeichen nachzählen kannst.
Für Fälle bei denen schlecht sichtbare Zeichen (z.B. Steuerzeichen) vorkommen, empfiehlt sich eine Ansicht der Byte-Werte. bin2hex() gibt die Bytes des übergebenen Arguments als Hex-Werte aus. Zum Formatieren dieser Zeichenkette eignet sich chunk_split() mit 2 und einem Leerzeichen als 2. und 3. Parameter.
Deine Vorgehensweise berücksichtigt außerdem im Gegensatz zur Funktion fgetcsv() nicht, dass Trennzeichen auch innerhalb von Werten vorkommen können, dann aber entsprechend gekennzeichnet sind.
echo "$verabschiedung $name";