php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 17-12-2007, 02:12
scraddy
 Newbie
Links : Onlinestatus : scraddy ist offline
Registriert seit: Aug 2006
Beiträge: 7
scraddy ist zur Zeit noch ein unbeschriebenes Blatt
Standard [REGEX] umlaute erlauben, POSIX

hallo comm,

ich komme grad echt nicht weiter. ich habe folgendes preg_match:

PHP-Code:
if(preg_match("#[^\\wäüöÄÖÜß\\- ]#i"$_POST['nachname'])){ ... } 
damit überprüfe ich eine formulareingabe. ich möchte nur buchstaben, umlaute, -, ß und leertaste erlauben. wenn ich das richtig gemacht habe müsste mir das pattern ja ein vorkommen jedes anderen zeichens finden, richtig?

mein problem sind die umlaute. die werden von dem pattern auch "gefunden".

ich habe schon einige sachen ausprobiert, u.a. das ganze mit POSIX, also mit [[:alpha:]] zu überprüfen. trotz setlocale(LC_ALL, "de_DE") klappt es auch damit nicht. laut PHPinfo ist POSIX bei mir aber enabled.

ich bin etwas ratlos. hatte vielleicht jemand schonmal ähnliche probleme?

gute nacht! und danke schonmal!

gruß, markus
__________________
Postkarten
Mit Zitat antworten
  #2 (permalink)  
Alt 17-12-2007, 02:40
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

\w = any letter or digit or the underscore character

Die Umlaute etc. stecken da also schon mit drin.
Mit Zitat antworten
  #3 (permalink)  
Alt 17-12-2007, 10:37
scraddy
 Newbie
Links : Onlinestatus : scraddy ist offline
Registriert seit: Aug 2006
Beiträge: 7
scraddy ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hm .. ich dachte \w ist eine zeichenklasse für - wie du schreibst - zeichen, ziffern und den unterstrich, aber exklusive ß und umlauten. ich finde da zum beispiel diese quelle.

kann es sein, dass es auf die PHP version ankommt, ob das mit umlauten im Regex funktioniert?
__________________
Postkarten
Mit Zitat antworten
  #4 (permalink)  
Alt 17-12-2007, 11:03
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Nein, es kommt aufs Locale an und das setzt du ja auf de_DE.
Ich habe auch eine Quelle: http://php.net/manual/en/function.preg-match.php#49926
Sie bezieht sich zwar auf [:alpha:], aber bestimmt trifft das auch auf \w zu.

Übrigens ist vermutlich dein Editor schuld. Der speichert dein Script bestimmt und UTF-8 und dann soll mit ISO-8859 gematcht werden. Aber das ist wie gesagt alles egal, wenn du die Umlaute gar nicht mehr explizit angibst sondern mit setlocale() und \w arbeitest.

Geändert von onemorenerd (17-12-2007 um 11:07 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 17-12-2007, 11:16
scraddy
 Newbie
Links : Onlinestatus : scraddy ist offline
Registriert seit: Aug 2006
Beiträge: 7
scraddy ist zur Zeit noch ein unbeschriebenes Blatt
Standard ein test zu [:alpha:]

du hast recht, [:alpha:] berücksichtigt die umlaute und das ß, \w jedoch nicht. ich habe meinen fehler zwar gefunden, aber dennoch möchte ich gerne mal wissen was es mit diesem POSIX [:alpha:] ding auf sich hat.

mein fehler war, dass die kodierung des dokuments in dreamweaver auf westeuropäisch stand und nicht auf UTF-8. damit sollte man wenn man es einmal anfängt ja durchgängig arbeiten. jetzt klappt das ganze, wenn ich die umlaute im REGEX stehen habe.

teste mal folgendes script:

PHP-Code:
<? 
header
("Content-type: text/html; charset=utf-8");
setlocale(LC_ALL'de_DE');

$var "ÄÖÜäöüMarkuasdasdÄÖÜüüö";

if(
preg_match("#[^\\w]#i"$var)){
    echo 
"Umlaute in ".$var." gefunden!";
} else { echo 
"Keine Umlaute in ".$var." gefunden!"; }

echo 
"<br />";

if(
preg_match("#[^[:alpha:]]#"$var)){
    echo 
"Umlaute in ".$var." gefunden!";
} else { echo 
"Keine Umlaute in ".$var." gefunden!"; }
?>
ich bekomme beides mal als ausgabe, dass umlaute gefunden wurden, obwohl das zweite pattern ja eigentlich nicht matchen dürfte, da in alpha ja angeblich umlaute berücksichtigt werden.
__________________
Postkarten

Geändert von scraddy (17-12-2007 um 11:19 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 17-12-2007, 11:36
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard Re: ein test zu [:alpha:]

Sorry, ich bin grad auf'm Sprung. Vielleicht teste ich es heute abend mal, wenn ich zurück bin.

Folgendes will ich aber noch schnell loswerden: \w und :alpha: sind IMHO identisch bzgl. der Umlaute - sowohl vor, als auch nach setlocale(LC_ALL, 'de_DE').
Mit Zitat antworten
  #7 (permalink)  
Alt 17-12-2007, 18:51
scraddy
 Newbie
Links : Onlinestatus : scraddy ist offline
Registriert seit: Aug 2006
Beiträge: 7
scraddy ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, also vielleicht irre ich mich ja auch, aber ich bin momentan noch von meiner meinung überzeugt. ich würde mich freuen, wenn du es nachher oder in den nächsten tagen mal testen würdest oder mir ein beispiel gibst, was deine vermutung beweist.

das würde ich wirklich gerne geklärt haben, auch wenn es nichts mehr mit meinem problem zu tun hat, aber das ist ja vielleicht auch für andere interessant.
__________________
Postkarten
Mit Zitat antworten
  #8 (permalink)  
Alt 17-12-2007, 19:00
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Hier kannst du die ansehen, was \w bzw. :alpha: alles matcht - bei mir sind das auch die Umlaute.
PHP-Code:
<?php
header
("Content-type: text/plain;");
setlocale(LC_ALL'de_DE');

$var "ÄÖÜäöüMarkuasdasdÄÖÜüüö";

preg_match_all("#[\w]#i"$var$matches);
print_r($matches);

preg_match_all("#[[:alpha:]]#"$var$matches);
print_r($matches);

?>
Mit Zitat antworten
  #9 (permalink)  
Alt 17-12-2007, 19:11
scraddy
 Newbie
Links : Onlinestatus : scraddy ist offline
Registriert seit: Aug 2006
Beiträge: 7
scraddy ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok, das ist seltsam. du bekommst also ein array, wo auch die umlaute als einträge drin stehen? ich erhalte beide male dieses array:
PHP-Code:
Array
(
    [
0] => Array
        (
            [
0] => M
            
[1] => a
            
[2] => r
            
[3] => k
            
[4] => u
            
[5] => a
            
[6] => s
            
[7] => d
            
[8] => a
            
[9] => s
            
[10] => d
        
)


liegt's am webspace?! unterschiedliche php konfiguration?
__________________
Postkarten
Mit Zitat antworten
  #10 (permalink)  
Alt 17-12-2007, 23:00
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ja, bei mir stehen auch die Umlaute im Array.
Was gibt setlocale() zurück? Was gibt "locale -a" auf der Konsole aus?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:02 Uhr.