SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Deine Leidenschaft ist die Unterwasserfoto-grafie?


Dann ist Qozido genau das Richtige für Dich!

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler ist da!

www.qozido.de

 


Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 09.09.2012, 15:50:33
Auf der Mauer Auf der Mauer ist offline
Anfänger
 
Registriert seit: Jun 2009
Beiträge: 101
Auf der Mauer befindet sich auf einem aufstrebenden Ast
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
  #2  
Alt 11.09.2012, 19:14:33
Benutzerbild von meikel
meikel meikel ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 66
Beiträge: 4.001
meikel befindet sich auf einem aufstrebenden Ast
AW: setlocale + ctype_alpha

1.
Zitat:
Zitat von Handbuch
Die Locale-Informationen wirken auf den Prozess, nicht auf den Thread. Sofern Sie PHP mit einer Multithreaded Server API wie IIS oder Apache unter Windows einsetzen, rechnen Sie mit unerwarteten Änderungen der Locale-Einstellungen zur Laufzeit des Skripts, auch wenn das Skript selbst keinen setlocale()-Aufruf durchführt. Dies passiert, da andere Skripte in verschiedenen Threads des selben Prozesses zur selben Zeit prozessweit die Locale-Einstellungen mittels setlocale() ändern.
2. welche PHP Version?
Mit Zitat antworten
  #3  
Alt 12.09.2012, 12:39:10
Auf der Mauer Auf der Mauer ist offline
Anfänger
 
Registriert seit: Jun 2009
Beiträge: 101
Auf der Mauer befindet sich auf einem aufstrebenden Ast
AW: setlocale + ctype_alpha

Hallo Meikel,

danke für die Antwort!

Die PHP Version ist 5.2.17.

Bedeutet das, dass ich die setlocale nicht allgemein in die session.php schreiben soll, da es keinen Vorteil bringt?
Normalerweise können ja mehrere php Dateien problemlos ineinander verschachtelt sein.
In dem Fall dachte ich, dass setlocale für alle Dateien gilt, welche in dieser Datei mit eingebunden sind.

Also MUSS setlocale wohl direkt an der Stelle eingebunden werden an der es benötigt wird.

Gruß
Auf der Mauer
Mit Zitat antworten
  #4  
Alt 12.09.2012, 16:31:56
Benutzerbild von meikel
meikel meikel ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 66
Beiträge: 4.001
meikel befindet sich auf einem aufstrebenden Ast
AW: setlocale + ctype_alpha

Zitat:
Zitat von Auf der Mauer Beitrag anzeigen
Die PHP Version ist 5.2.17.
Älter als die Steinkohle. Aktuell ist PHP 5.4.6.
http://www.php.net/archive/2012.php#id2012-08-16-1

Zitat:
Bedeutet das, dass ich die setlocale nicht allgemein in die session.php schreiben soll, da es keinen Vorteil bringt?
Du hast doch den Text gelesen, daß sich setlocale auf den Prozeß auswirkt.
Mit (fast)CGI haste da bessere Karten, weil dann der Apache einen CGI Prozeß für das betreffende Script generiert. Beim apache2handler biste auf die Gnade der 99 Nachbarn angewiesen, daß die dann kein setlocale verwenden.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
setlocale() fehlermeldung... jazz13 PHP für Fortgeschrittene und Experten 2 13.09.2006 16:52:18
setlocale silberlocke PHP Grundlagen 14 23.07.2005 09:43:06
Benutzung von setlocale(); MarkusStruebel PHP Grundlagen 5 29.04.2005 21:42:50
setlocale (LC_TIME, "de_DE"); bweichel PHP für Fortgeschrittene und Experten 10 07.08.2003 11:12:46


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:22:18 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.


© 2001-2014 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt