Hallo,
ich habe ein ziemlich verrücktes Problem entdeckt.
Die Funktion ctype_alpha kennt ja keine Umlaute wie äöü und auch das scharfe ß ist ihr fern.
Wenn ich aber mit setlocale den Zeichensatz angebe, dann funktioniert ctype_alpha korrekt.
PHP-Code:
// Lokaler Zeichensatz
setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
$string = "äöüß";
if (ctype_alpha($string) == TRUE) {
echo "Nur Buchstaben";
} else {
echo "Nicht nur Buchstaben!";
}
Ich habe es genauso getestet, mit dem obigen Code und ctype_alpha funktioniert einwandfrei auch mit Umlauten.
Jetzt will ich ctype_alpha direkt in meinen Skripten anwenden, als
Ergebnis kommt aber fast immer FALSE raus, obwohl ja setlocal gesetzt ist.
Die Datei hat folgenden Aufbau:
PHP-Code:
/* In dieser Datei wurde das setlocal gesetzt + getestet
Hier ist es in Ordnung mit äöüß */
require_once('../p/web/session.php');
// Hier kommt das Skript
//
// Lümmel = TRUE
// Übel = FALSE
// Bäcker = FALSE
// Döner = LECKER
// Mörtel = FALSE
//
Sowohl ö,ä als auch ß werden nicht mehr als Buchstaben erkannt, ü dagegen schon.
Wie kann das sein? Enweder ctype_alpha kennt die Umlaute oder nicht.
Warum nur das ü und warum nur als Kleinbuchstabe?
Sicher gibt es auch andere Wege für die Überprüfung eines Strings, aber wieso
funktioniert ctype_alpha in der
session.php Datei einwandfrei und im darunterliegenden Skript (in derselben Datei!) nicht mehr?
Warum wird von den Umlauten immerhin doch noch 1 erkannt?
Bin für Tipps dankbar
Gruß
Auf der Mauer