preg_match
preg_match
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
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
"credendo vides"
Code: Alles auswählen
/^[-+]?[0-9]+$/
^ = 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
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
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
Nicht ganz: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()
http://de.php.net/manual/de/function.is-int.php hat geschrieben:is_int() checks whether the type of the variable is an int, not the contents. If you want to check the contents, you can use is_numeric().
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

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
"credendo vides"
Bei so einfachen Sachen solltest du es lieber so machen:
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.
Code: Alles auswählen
if(substr($str,0,1)=='/' && substr($str, strlen($str), 1) != '/')
{
jo
}
else
{
nö
}
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
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
"credendo vides"