echo $begrüßung;
schau mal in die Benutzerkommentare unter http://de.php.net/manual/de/function.utf8-encode.php.
Dort gibt es mehrere Vorschläge für Funktionen zum Erkennen, ob eine Zeichenkette UTF8-kodiert ist oder nicht.
Konkret habe ich dazu 3 Funktionen gefunden.
migueldiaz at gennio dot com 14-Dec-2005 06:23 bringt bei var_dump(isUTF8('ä')); ein false. Der Autor versucht einen UTF8-String zu erkennen, indem er ihn noch einmal durch utf8_encode() schickt und dann ein ganz bestimmtes Zeichen darin erwartet. Das funktioniert nur mit einer begrenzten Auswahl von Zeichen. Die Bytefolge E8 A9 B1 (als ISO-8859-1 gelesen: 話, als UTF8: 話) liefert ein false. Ein C3 A4 (ISO-8859-1: ä, UTF8: ä) liefert true.
http://iubito.free.fr 10-Mar-2005 08:57 testet nur, ob der String mit einer UTF8-BOM beginnt. Diese BOM ist für UTF8 nur für Dateien üblich und auch keine Pflicht. Einzelne Strings werden selten damit ausgezeichnet.
Beide Autoren schwindeln also, wenn sie ihre Funktion "is"UTF8 nennen.
bmorel at ssi dot fr 17-Feb-2004 10:22 ist nicht ganz so anmaßend und nennt sich seems_utf8 (scheint utf8 zu sein). Die Funktion kommt der Aufgabenstellung schon recht nahe. Der String wird Zeichen für Zeichen durchgesehen und die Prüfung bei ungültigen UTF8-Sequenzen abgebrochen.
Es ist zwar recht ungewöhnlich, aber nicht gänzlich ausgeschlossen, dass eine UTF8-Sequenz in einem ansonsten nur aus ASCII-Zeichen (Bytewerte 0..127) bestehenden Text nicht als UTF8 interpretiert werden soll.
Beispielsatz: "Das scharfe S ist als UTF8 kodiert und als ISO-8859-1 angezeigt als ß zu sehen."
Die Aussage dieses Satzes geht verloren, wenn er als UTF8-kodiert interpretiert wird: "Das scharfe S ist als UTF8 kodiert und als ISO-8859-1 angezeigt als ß zu sehen."
echo "$verabschiedung $name";