php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.12.2007, 22:04  
Erfahrener Benutzer
 
Registriert seit: 30.04.2004
Beiträge: 225
rocco
rocco eine Nachricht über ICQ schicken
Standard Regex: Anfangschwierigkeiten

Hab mich die Tage ein bisschen mit regular expressions auseinandergesetzt und wollte heut ein bisschen probieren, bin aber schon bald auf ein Problem gestoßen.
Will einen Ausdruck überprüfen, der nur Buchstaben A-Z, a-z, Ziffern 0-9 und einen Bindestrich enthalten darf. So hab ich das für richtig gehalten:

PHP-Code:
if (preg_match("[^0-9a-zA-Z-]",$bezeichnung)) die("Falsch"); 
Leider "died" er nicht. Ich hab den Bindestrich in der regex als möglichen Übeltäter mal ausgeschlossen, aber er "died" trotzdem nicht, wenn ich Sonderzeichen in meine $bezeichnung schreibe.
Kann mir jemand bitte kurz von der Leitung helfen...

Danke, und schöne Feiertage noch. Grüße
rocco ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.12.2007, 22:26  
CIX88
Gast
 
Beiträge: n/a
Standard

Zitat:
"died"
Was isn das ?

Zitat:
"[^0-9a-zA-Z-]"
Vielleicht mal so: "~^[0-9a-z\-]+$~i"

Zitat:
schöne Feiertage
jo kommt zurück
 
Alt 24.12.2007, 23:21  
Erfahrener Benutzer
 
Registriert seit: 30.04.2004
Beiträge: 225
rocco
rocco eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von CIX88
Zitat:
"died"
Was isn das ?
Damit mein ich dass der Befehl die() ausgeführt wurde.

Zitat:
Zitat von CIX88
Vielleicht mal so: "~^[0-9a-z\-]+$~i"
Leider "died" er dann immer; auch bei reiner Buchstabenfolge
rocco ist offline  
Alt 25.12.2007, 07:59  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von rocco
Zitat:
Zitat von CIX88
Vielleicht mal so: "~^[0-9a-z\-]+$~i"
Leider "died" er dann immer; auch bei reiner Buchstabenfolge
natürlich, denn alles was in den klammern steht ist eine oder verknüpfung. das heißt es können entweder zahlen oder buchstaben oder der bindestrich kommen oder alles vermischt (wird übrigens hier zeichenweise geprüft).

Zitat:
Will einen Ausdruck überprüfen, der nur Buchstaben A-Z, a-z, Ziffern 0-9 und einen Bindestrich enthalten darf. So hab ich das für richtig gehalten:
Zitat:
Leider "died" er dann immer; auch bei reiner Buchstabenfolge
wie passen diese beiden aussagen zusammen?


naja, da du am lernen bist, sehr zu empfehlen ist das hier: http://www.regenechsen.de/phpwcms/index.php?regex_allg
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline  
Alt 25.12.2007, 11:43  
Neuer Benutzer
 
Registriert seit: 19.04.2008
Beiträge: 6
bluefanu befindet sich auf einem aufstrebenden Ast
Standard

Hallo

PHP-Code:
<?php

// nur zahlen, buchstaben unter und bindestrich erlauben ..  gross-kleinschreibung egal (/i)
if (!preg_match('/^[\w|\-]+$/i'$bezeichnung)){
die(
'Falsch');
}

?>
bluefanu ist offline  
Alt 25.12.2007, 15:01  
CIX88
Gast
 
Beiträge: n/a
Standard

Zitat:
und bindestrich erlauben
Von Unterstrichen wurde aber nichts erwähnt.
Zitat:
nur Buchstaben A-Z, a-z, Ziffern 0-9 und einen Bindestrich
Demnach auch nur [0-9a-z\-]
Oder: http://www.regex-tester.de/uc_224_de.html
 
Alt 25.12.2007, 15:23  
Erfahrener Benutzer
 
Registriert seit: 30.04.2004
Beiträge: 225
rocco
rocco eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von CIX88
Demnach auch nur ^[0-9a-z\-]
Oder: http://www.regex-tester.de/uc_224_de.html
Danke. Also wenn das ganze so aussieht: ~^[0-9a-z\-]+$~i, wie ist das dann?
~ is der Delimiter
^ bedeutet NICHT
\ ist das dann ein UND
+ erfasst alle vorkommenden Phrasen, nicht nur die erste
$ kennzeichnet das Ende
i egalisiert Groß- und Kleinschreibung

Also bedeutet das, dass man alle Phrasen erfasst, die nicht 0-9 und a-z und - sind. Ist das richtig so?

Grüße
rocco ist offline  
Alt 25.12.2007, 15:39  
Erfahrener Benutzer
 
Registriert seit: 30.04.2004
Beiträge: 225
rocco
rocco eine Nachricht über ICQ schicken
Standard

Hm.... irgendwas haut da nicht hin.
PHP-Code:
if (preg_match("~^[0-9a-z\-]+$~i",$bezeichnung)) die("PM-die: ".$bezeichnung); 
Aus irgendeinem Grund ist des preg_match immer TRUE. Aber ich glaub nicht dass es an der Regex liegt...

/edit:
Habs mal so gemacht:
PHP-Code:
preg_match("~^[0-9a-z\-]+$~i",$bezeichnung,$treffer);
if(
$treffer[1]) die("PM-die: ".$bezeichnung); 
Funktioniert aber auch nicht. Es gibt nicht mal die Ausgangsvariable $treffer[0].
rocco ist offline  
Alt 25.12.2007, 16:24  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Also jetzt muss ich hier mal einschreiten:
Bitte lies zuerst mal die Seite auf regenechsen.de durch, die dir brian gepostet hat und dann überleg außerdem nochmal, ob

PHP-Code:
<?php
preg_match
( .. );
?>
wirklich Sinn macht. Für was das Dächle ^ steht, solltest du auch noch einmal nachschlagen, es hat zwei verschiedene Bedeutungen.


CIX88 hat dir bereits den passenden RegExp:
Zitat:
Code:
~^[0-9a-z\-]+$~i
auf deine Frage:
Zitat:
einen Ausdruck überprüfen, der nur Buchstaben A-Z, a-z, Ziffern 0-9 und einen Bindestrich enthalten darf
gepostet. Wenn du eine neue Frage hast oder etwas nicht geklappt hat, formulier es auch bitte, ansonsten sehe ich keine Diskussionsgrundlage mehr. Das was du hier an Denkleistung zur Problemlösung hinzusteuerst finde ich sehr sehr schwach. Und das hat nichts damit zu tun, dass du ein Anfänger bist, auch wenn diese Ausrede sehr oft verwendet wird, um sich mit so wenig Arbeit wie möglich aus der Affäre zu ziehen.

In der Hoffnung auf Besserung ..
Zergling-new ist offline  
Alt 25.12.2007, 16:25  
Erfahrener Benutzer
 
Registriert seit: 30.04.2004
Beiträge: 225
rocco
rocco eine Nachricht über ICQ schicken
Standard

Ich hab' das jetzt einfach mit \W gelöst und anschließend nochmal das Ganze auf einen Bindestrich überprüft. Jetzt hauts hin!

Danke & Grüße
rocco ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Array sortieren mit regex Lupi PHP Tipps 2008 3 21.07.2008 15:17
Regex: Auslesen der Meta-Tags einer Webseite Sucheingrenzung pepe24 PHP Tipps 2008 12 31.05.2008 15:41
2 Regex in PHP kompatible Syntax übersetzen NoiZy PHP-Fortgeschrittene 6 07.04.2008 09:04
Regex Link Problem Broadcast PHP Tipps 2008 2 29.02.2008 16:30
Gierig/nicht gieriger Regex Papst PHP Tipps 2008 22 02.12.2007 20:15
[gelöst :D ] regex tuts nur einmal pro zeile notyyy PHP Tipps 2008 17 24.09.2007 15:40
RegEx für Mail-Adresse (Bitte prüfen!) vollkommenegal PHP Tipps 2006 13 20.11.2006 20:02
Regex löscht alle Zeilenumbrüche. Anduril PHP Tipps 2006 3 16.10.2006 22:36
ACCEPT-ENCODING: gzip, regex ermittlung Andreas PHP-Fortgeschrittene 7 04.02.2006 16:52
habe ein paar fragen zu REGEX imported_kremser PHP Tipps 2006 11 31.01.2006 15:30
RegEx findet Stringvorkommen nicht PHP Tipps 2007 6 08.12.2005 21:52
regex Funktion PHP Tipps 2005-2 6 18.06.2005 02:46
Regex für attribute in quelltexten robo47 PHP Tipps 2005 6 27.01.2005 18:29
Regex über mehrere zeilen PHP-Fortgeschrittene 3 25.12.2004 16:48
[Erledigt] Regex für selektives Replacement PHP-Fortgeschrittene 2 25.12.2004 15:57

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
regex bindestrich und buchstaben, 1. buchstabe groß und nur einmal in regexps js, regex a-z und bindestrich, regex bindestrich, php nur buchstaben und bindestrich erlaubt preg_match

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.