Regulärer Ausdruck ist fehlerhaft
Enrico
- php
Hallo,
ich möchte eine URL mit folgendem Aufbau über PHP prüfen:
http://www.unsereseite.de/ADMIN/PHP/Login.php?iWb5AplQxO1kODPKXYtrRhyLwcVZ680sznKmfqEedU2a7MvgGHBJ3o4SCT9IjFNucy
Der reguläre Ausdruck hat folgenden Aufbau:
if (preg_match("/^(http\:\/\/)?+(www\.)?+unsereseite\.de\/ADMIN\/PHP\/Login\.php\?[a-z0-9]{64}$/i", $a))
{
...
}
Und dieser Ausdruck validiert falsch und ich komme einfach nicht dahinter, warum.
Ich kann keine(n) Fehler entdecken.
Was habe ich falsch gemacht?
Vielen Dank für eure Hilfe und Gruß,
Enrico
Hi,
if (preg_match("/^(http://)?+(www.)?+unsereseite.de/ADMIN/PHP/Login.php?[a-z0-9]{64}$/i", $a))
?+ ???
cu,
Andreas
--
[Warum nennt sich Andreas hier MudGuard?](http://MudGuard.de/)
[O o ostern ...](http://ostereier.andreas-waechter.de/)
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
Aloha ;)
Das habe ich dieser Seite entnommen (Rubrik "Gruppierung").
Wozu denn "Kein- oder einmal und kein Backtracking" (?+), wenn du direkt "Einmal oder keinmal" (?) haben kannst? Zumal ich mir wirklich nicht sicher bin, ob deine Quelle überhaupt Recht hat, meine Quelle sieht für "+" keine weiteren Bedeutungen vor (während die zusätzlichen Bedeutungen von ? erwähnt werden, die Kombination +? ist demnach nach meiner Quelle definiert, nur das ?+ zumindest nach meiner Lesart nicht)... Kann mich aber auch täuschen.
Grüße,
RIDER
Hallo RIDER,
ich habe das "+" nach den Fragezeichen entfernt und es funktioniert weiterhin.
Dann hatte ich wohl, nach der Korrektur der Zeichenanzahl, einfach nur Glück, sollte es die Kombination "?+" tatsächlich geben.
Gruß,
Enrico
Hallo nochmal,
ich habe das "+" nach den Fragezeichen entfernt und es funktioniert weiterhin.
Wüsste jetzt auch nicht, was ein Possessive Quantifier hier für Sinn macht :)
Gute Nacht, Robert
Aloha ;)
?+ ???
Schätze auch, dass da der Fehler (oder zumindest: ein Fehler) begraben liegt. "?+" wäre die Kombination aus "Entweder einmal oder gar nicht" und "Einmal oder mehrmals". Diese Kombination ist in dieser Form höchst unsinnvoll, setzt der "+"-Quantifier ja voraus, dass das vorhergehende mindestens einmal vorkommt. Da unsinnvoll, ist "?+" so für den RegExp-Parser eine uninterpretierbare Angabe...
Grüße,
RIDER
Servus RIDER,
Schätze auch, dass da der Fehler (oder zumindest: ein Fehler) begraben liegt
D.h., die Seite hätte hier einen mindestens gegebenenfalls unglücklich verlaufenden Ausdruck veröffentlicht?
Was wäre dann der beste Ausdruck für "keinmal oder einmal"?
Hätte ich auf dem Zustand meiner Augenschwere die ihr gebührende Aufmerksamkeit geschenkt, als zu programmieren, dann hätte ich auch nicht überlesen, dass die Lösung nur ein paar Zeilen weiter oben gewesen wäre.
Mission für heute erfüllt.
Euch allen besten Dank für den flott erteilten Stoß in die richtige Richtung.
Gute Nacht und Gruß,
Enrico
Tach!
Und dieser Ausdruck validiert falsch und ich komme einfach nicht dahinter, warum.
Ich seh jetzt auf die Schnelle auch nicht die Ursache. Aber probier es doch mal schrittweise. Erstmal die Teilausdrücke und dann immer mehr zusammengesetzt.
Die alternative Frage wäre, ob das ein Regulärer Ausdruck sein muss oder ob du nicht auch die URL mit parse_url() zerlegen und die Einzelteile getrennt und prüfen kannst.
dedlfix.
Servus dedlfix,
Aber probier es doch mal schrittweise
^(http://)?+(www.)?+ validiert korrekt. In einem Online-Tester findet er "www.", "http://" und auch "http://www.", das funktioniert. Die nachfolgenden Zeichenfolgen führen ins Leere ^^
Gruß,
Enrico
Hallo Enrico,
...iWb5AplQxO1kODPKXYtrRhyLwcVZ680sznKmfqEedU2a7MvgGHBJ3o4SCT9IjFNucy
falls das [a-z0-9]{64}
entsprechen sollte: Das sind aber 66 Zeichen.
lG, Robert
Hallo Robert,
Das sind aber 66 Zeichen
Stimmt, dummer Denkfehler, flink korrigiert und schon klappt's :-)
Besten Dank!!
Gruß,
Enrico