Einzelnen Beitrag anzeigen
  #1  
Alt 09.09.2012, 15:50:33
Auf der Mauer Auf der Mauer ist offline
Anfänger
 
Registriert seit: Jun 2009
Alter: 42
Beiträge: 119
setlocale + ctype_alpha

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
Mit Zitat antworten