Ersten Buchstaben selektieren

Mr_D

Grünschnabel
Hallo zusammen,

die Aufgabe scheint zunächst einfach: ich möchte den ersten Buchstaben einer Zeichenkette ermitteln. Probiert habe ich

ersterBuchstabe = substr($zeichenkette,0,1);
ersterBuchstabe = zeichenkette{0};

Das Problem steckt aber im Detail, sprich bei Umlauten funktionieren diese Methoden nicht!

Habe es auch mit dem ASCI-Code probiert: ord(zeichenkette{0}; Das Problem hierbei ist, das egal ob Ä, Ö oder Ü das Ergebnis stets 195 ist und ich die Buchstaben danach nicht mehr unterscheiden kann.

Hat jemand einen Tipp?

Grüße

Dirk
 
Also bei mir werden die Umlaute ausgegeben :suspekt:

PHP:
$zeichenkette = "ÄäÜüÖö";
$ersterBuchstabe = substr($zeichenkette,0,1);
echo $ersterBuchstabe[0];

Vielleicht muss das irgendwie am Server konfiguriert werden?
 
Hi,

du kannst auf die einzelnen Zeichen auch über den Index zugreifen:

PHP:
$zeichenkette = "ÄäÜüÖö";
echo $zeichenkette[0];

Best regards
 
Die Frage ist auch wo die Zeichenkette herkommt.

Ist es eine Zeichenkette die irgendwo auf einer Seite enthalten ist oder wird sie per GET/POST übergeben oder kommt die Zeichenkette aus einer Datenbank?
 
Hallo,

Danke für die schnelle Antwort. Habe Deinen Code getestet. Ausgabe ist wieder das Sonderzeichen 195 (eine schwarze Raute mit einem weißen ? darin). Habe zur Probe echo $zeichenkette geprüft. Hier zeigt er die Umlaute noch korrekt an.

Die Zeichenkette kommt aus einer Datenbank. $zeichenkette mit echo $zeichenkette ausgegeben enthält aber den korrekten Umlaut. Irgendwo bei der Umwandlung kommt der abhanden.

Grüße

Dirk
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

versuche mal die Funktion [phpf]mb_substr[/phpf] anstatt dem normalen [phpf]substr[/phpf] zu nutzen.

Es liegt eindeutig daran, dass die Umlaute als Multibyte-Zeichen gespeichert werden. Siehe auch Beispiel hier: http://codepad.org/MZckxVB5
 
Hallo zusammen,
herzlichen Dank für eure Mithilfe. Habe mit mb_substr eine Lösung gefunden. Für Programmierer mit ähnlichen Fragestellungen kommt sie hier:
PHP:
		$ersterBuchstabe = substr($zeichenkette,0,1);

		// auf Umlaut prüfen
		if(ord($ersterBuchstabe)==195){
		  $ersterBuchstabe = mb_substr($zeichenkette,0,2);
                                }
Grüße
Dirk
 
Zuletzt bearbeitet von einem Moderator:
Zurück