echo $begrüßung;
» Wenn du mit UTF-8 hantierst, solltest du das konsequent tun und nicht nur teilweise, denn so liefert dir die Lösung bei Nicht-ASCII-Zeichen kein gewünschtes Ergebnis.
und wo habe ich da worauf vergessen?
Du ermittelst die Stringlänge mit mb_strlen() und unter Berücksichtigung der Besonderheiten von UTF-8. Bei einem UTF-8-kodierten "Ärger" ergibt mb_strlen(), eine Länge von 5, für die normalen PHP-String-Funktionen hat es hingegen die Länge 6. Das betrifft auch den zeichenweisen Zugriff. 'Ärger'[0] ergibt nicht 'Ä' sondern das erste Byte der zwei Ä-Bytes, usw.
PHP wird erst ab Version 6 ohne das Hilfsmittel der mb-Funktionen mit UTF-8 richtig umgehen können.
echo "$verabschiedung $name";