| 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! Post your PHP questions here! |
 |

02-11-2001, 23:18
|
|
Argus
Newbie
|
|
Registriert seit: Oct 2001
Beiträge: 26
|
|
Hi,
Ich möchte mit nem ereg herausfinden ob in einer Variable Sonderzeichen enthalten sind... gibt es da eine globale Definition für?
Also für alle kleinen Buchstaben kann ich ja [a-z] schreiben. Gibts sowas auch für Sonderzeichen?
Thx schoma
|

02-11-2001, 23:47
|
|
JoelH
Registrierter Benutzer
|
|
Registriert seit: Jul 2001
Beiträge: 2.740
|
|
hmm,
was sind für dich denn alles Sonderzeichen ?
|

03-11-2001, 00:02
|
|
Argus
Newbie
|
|
Registriert seit: Oct 2001
Beiträge: 26
|
|
In diesem Fall alles bis auf die Buchstaben und die Zahlen
|

03-11-2001, 00:05
|
|
JoelH
Registrierter Benutzer
|
|
Registriert seit: Jul 2001
Beiträge: 2.740
|
|
hmm,
in diesem Fall würde ich auf Buchstaben und Zahlen testen , geht wohl einfacher
|

03-11-2001, 00:14
|
|
Argus
Newbie
|
|
Registriert seit: Oct 2001
Beiträge: 26
|
|
ja klar aber wenn ich jetzt ereg("[a-zA-Z0-9]", $var); eintippe, dann guckt er ja ob mind. einmal eins von den zulässigen Werten eingetippt wurde. Es soll aber nur aus Buchstaben und Zahlen bestehen... wie mach ich dann das?
Das ist ja das Problem... bzw. das ist das Problem, wenns nich andersrum geht  .ähh.. ja also wie sag ich ihm, das er nur true zurückgeben soll, wenn ALLE Zeichen Buchstaben/Zahlen sind.
Thhxxxxx
|

03-11-2001, 00:45
|
|
JoelH
Registrierter Benutzer
|
|
Registriert seit: Jul 2001
Beiträge: 2.740
|
|
hmm,
iss ja nicht gerade meine domäne aber versuchen kann man es ja mal, also ich würd so an die Sache rangehen :
$true = preg_match("|[a-zA-Z0-9].*|",$durchsuchstring)
natürlich sind meine regExp. wie imemr ohne garantie !!
|

03-11-2001, 01:33
|
|
smeagol
Newbie
|
|
Registriert seit: May 2001
Beiträge: 141
|
|
Also wenn du nach .* suchst, gibt er true bei jedem beliebigen Zeichen aus.
Verbesserungsvorschlag:
$true = preg_match("|^[a-zA-Z0-9]+$|",$durchsuchstring);
Was passiert da drin?
"|^[a-zA-Z0-9]+$|" zeigen ihm, dass das Muster von Anfagn bis Ende der zu durchsuchenden Zeichenkette stehen muss.
("|^[a-zA-Z0-9]+$|" sagt ihm, das Muster ist gültig wenn die links stehende Zeichenklasse mindestens einmal oder mehrmals auftaucht.
Dadurch verhindert man, dass die $true wahr ist, wenn die zu testende Variable komplett leer ist (dann kann er ja kein Zeichen finden).
|

03-11-2001, 02:13
|
|
JoelH
Registrierter Benutzer
|
|
Registriert seit: Jul 2001
Beiträge: 2.740
|
|
hmm,
dies stimmt so aber nicht .* bedeutet das der [] Ausdrück belieb lang sein kann, nicht mehr und nicht weniger
|

03-11-2001, 20:26
|
|
smeagol
Newbie
|
|
Registriert seit: May 2001
Beiträge: 141
|
|
Du irrst
Betrachte mal folgendes Beispiel, um deine Aussage zu überprüfen:
$durchsuchstring = "aa";
$true = preg_match("|[a].*|",$durchsuchstring);
echo $true;
Er sollte "1" (also wahr) ausgeben.
Schön und gut.
Probieren wir mal $durchsuchstring = "a";
Und danach $durchsuchstring = "aaaaaaaaaaaaaaaaa";
Gibt immer wieder "1" aus. Prima?
Und dann probieren wir $durchsuchstring = "ab";
Hmm. Da gibt er doch schon wieder "1" aus. Aber es steht doch gar kein "b" in der RegExp? Warum macht er das? Kannst es wahlweise auch mit "a%", "a{wzw§$%~§%" probieren, es ist immer wahr.
Lösung: "." steht für ein beliebiges Zeichen. Und "*" ist nichts anderes als ein Quantifier, der mir sagt: Kein- oder mehrmals folgt der links davon stehende Ausdruck (egal ob Gruppe, Zeichenklasse oder einzelnes Zeichen).
Um die beliebige Länge festzustellen entweder die geschweiften Klammern nehmen ({1, }) oder einfach nur das *.
|

05-11-2001, 23:07
|
|
Titus
PHP Master
|
|
Registriert seit: Jan 2001
Ort: im Rodgau
Beiträge: 4.292
|
|
if (ereg('^[0-9a-zA-Z]*$', $string)) echo "'$string' enthält keine Sonderzeichen.";
Willst du, dass mindestens ein Zeichen enthalten sein soll, dann mach aus dem Sternchen (*) ein Plus (+).
__________________
mein Sport:  mein Frühstück:  meine Arbeit:
Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| 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.
HTML-Code ist aus.
|
|
|
|
PHP News
|