Zeichenfolge mit Umlauten via spintf() formatieren

Ich habe ein Problem mit der formatierten Ausgabe von Texten: Ein vorgegebener Text soll vor der Ausgabe des nächsten Textteils mit Leerzeichen auf 22 Stellen aufgefüllt werden:

$ausgabe .= sprintf("%-22.22s", $name).$vorname;

Der Befehl funktioniert wunderbar, solange keine Umlaute in der Variable $name enthalten sind: Je Umlaut entfällt ein Leerzeichen, oder anders ausgedrückt: Ein Umlaut scheint als 2 Zeichen gezählt zu werden.

Die Daten in $name stammen aus einer mySQL-Datenbank und werden in eine Textdatei geschrieben. Zeichenformat sowohl der Datenbank als auch der Datei ist UTF-8:

header(„Content-type: application/text;charset=utf-8“);

Ist eine formatierte Ausgabe möglich?

Ich habe ein Problem mit der formatierten Ausgabe von Texten:
Ein vorgegebener Text soll vor der Ausgabe des nächsten
Textteils mit Leerzeichen auf 22 Stellen aufgefüllt werden:

$ausgabe .= sprintf("%-22.22s", $name).$vorname;

Der Befehl funktioniert wunderbar, solange keine Umlaute in
der Variable $name enthalten sind: Je Umlaut entfällt ein
Leerzeichen, oder anders ausgedrückt: Ein Umlaut scheint als 2
Zeichen gezählt zu werden.

das deutet darafuhin, dass sprintf prinzipiell od. in deiner php version kein utf-8 unterstuetzt.

evtl. reicht dir str_pad

Vielen Dank, mit str_pad komme ich klar. Danke für den Hinweis!

Marcus

Hallo Jörg,

sprintf unterstützt tatsächlich generell keine Mehrbyte-Character. Eine Lösung dazu steht in den Kommentaren von Handbuch (http://www.php.net/manual/de/function.sprintf.php), falls man tatsächlich die Formatierungsfähigkeiten von printf benötigt.

MfG Georg V.