Seite 1 von 2
preg_match
Verfasst: 10.01.2003 00:18
von Thies
Hi, ich brauche mal wieder Hilfe, denn ich kapiere das mit dem preg_match einfach nicht.
Wie sieht denn der Befehl aus, um zu testen, ob eine Eingabe folgende Formate hat:
-Zahl (-1, -2, -3, -4 ...)
0
+Zahl (+1, +2, +3,+4 ...)
Zahl (1,2,3,4...)
Kann mir dabei jemand weiterhelfen? Und vielleicht auch erklären, warum der Befehl dann im Ergebnis wie aussieht???
Danke
Frank-Andre
Verfasst: 10.01.2003 00:46
von Pyramide
/ = Pattern Anfang
^ = Zwischen dem als gültig erkannten und dem Anfang des Strings darf nichts stehen
[+-]? = Aus dem Zeichensatz [+-] 0 oder 1 Zeichen (d.h. plus, minus oder nichts)
[0-9]+ = 1 oder Mehr Zeichen von 0-9
$ = Zwischen dem als gültig erkannten und dem Ende des Strings darf nichts stehen
/ = Pattern Ende
Verfasst: 10.01.2003 00:53
von PhilippK
Mal anders gefragt: ist preg_match() wirklich das, was du brauchst?
preg_match() sucht nach einem Muster
innerhalb eines Strings. Was du brauchst, ist ein Test, ob es sich um einen Integer-Wert handelt. Das machst du aber besser mit is_int().
Ansonsten mal als Versuch (ohne Garantie):
preg_match("#(\+|\-|)[0-9]+#", $your_var)
# -> Trennung (kann auch was anderes sein)
(\+|\-|) -> entweder +, - oder nichts (+ und - escaped)
[0-9] -> die Zeichen von 0 bis 9
+ mindestens einmal
einziger Haken: -0 und +0 geht auch durch (was durchaus sinnvoll ist)
Aber vielleicht gibt's hier ja jemanden, der so was im Schlaf auswendig kann
Gruß, Philipp
Verfasst: 10.01.2003 00:54
von PhilippK
Manche sind halt doch schneller... (und perfekter

)
Gruß, Philipp
Verfasst: 10.01.2003 00:59
von Pyramide
PhilippK hat geschrieben:Was du brauchst, ist ein Test, ob es sich um einen Integer-Wert handelt. Das machst du aber besser mit is_int()
Nicht ganz:
Verfasst: 11.01.2003 13:37
von Thies
Herzlichen Dank, es hat geklappt, es geht und ich verstehe es nun etwas besser, wie das aufgebaut sein muss.
Wenn ich mal helfen kann, schreibt mir.
Frank-Andre
Verfasst: 11.01.2003 13:41
von PhilippK
Thies hat geschrieben:Wenn ich mal helfen kann, schreibt mir.
Wenn du mir die Lotto-Zahlen für nächsten Samstag hättest, würde ich nicht nein sagen...
Gruß, Philipp
Verfasst: 13.01.2003 10:00
von Thies
Wenn ich die doch nur selber wüßte ....
Ich habe aber noch eine Frage zu einem Pattern:
bei einer Eingabe will ich prüfen, ob der eingegebene String mit / beginnt und ohne / endet. Dazwischen können Zahlen, Buchstaben, / etc. stehen, es geht um die Eingabe eines Pfades. Geht das so:
"/[\/]{1}\w+^[\/]$/"
Oder wie muss ich das machen?
Danke
Frank-Andre Thies
Verfasst: 13.01.2003 11:48
von Pyramide
Bei so einfachen Sachen solltest du es lieber so machen:
Code: Alles auswählen
if(substr($str,0,1)=='/' && substr($str, strlen($str), 1) != '/')
{
jo
}
else
{
nö
}
Wenn es sich um einen PFad auf dem Server handelt, kannst du auch
file_exists verwenden; das hat den vorteil, daß auch windows- oder unc pfade funktionieren.
Verfasst: 13.01.2003 12:38
von Thies
Ich danke Dir.
Das mit file_exists ist gut, nur prüfe ich ein Verzeichnis und keine Datei. Ich wollte auch zunächst nur prüfen, ob die Pfad-Angabe von der Syntax her stimmen kann (und mich mit RegExpr. etwas beschäftigen

)
Nachtrag:
substr($pfad, strlen($pfad)-1, 1) muss der zweite Teil lauten, ist mir gerade aufgefallen, weil er schliessende / nicht erkannte
CU
Frank-Andre