Veröffentlicht 15. Dezember 200816 j Salut, ich bin auf der Suche nach einem (freien) PHP-Script, was Reguläre Ausdrücke auf Validität prüft. Eine Suche nach "regex validator" bringt mir nur Seiten, die mir das als Dienst anbieten - ich suche den dazu nötigen Algorithmus in PHP. Danke
16. Dezember 200816 j Autor *gg* Nee, ich will den RegEx ja validieren, bevor ich ihn (z.B. in preg_match()) benutze.
16. Dezember 200816 j naja, wie und warum ? ^^, dafür sind die PHP Dinger ja da. Du kannst es auch mit javascript machen...je nachdem was du tun willst. Regexp ist so komplex - ich bin mir nicht sicher ob es da überhaupt "validatoren" gibt, valide ist fast alles, ob es das ist was du haben willst, ist eine andere frage.
16. Dezember 200816 j Autor Es geht darum, einen vom Benutzer eingegebenen RegEx zu validieren, bevor ich ihn im weiteren Verlauf zum Validieren von anderen Werten benutze. Die detaillierten Infos á la "an Stelle 14 muß die Klammer geschlossen werden" brauche ich dabei nichtmal - mir reicht einfach die Info "das ist ein valider RegEx" (oder eben nicht).
17. Dezember 200816 j Dann prüfe doch einfach, mittels einer RegEx, ob in der "RegEx" des Users, welche ja nur ein String ist, wenn du sie bekommst, gültige RegEx-Zeichen (^,$,[,], usw...) drin stehen. Das ganze muss von der Syntax her ja nur wie eine RegEx aussehen. Außerdem. Falls die RegEx vom User nicht valide ist, wird die RegEx eh nicht funktionieren. Und dann weißt du ja, ob der RegEx valide ist oder nicht :confused: Grüße, bytebrain
18. Dezember 200816 j Autor Dann prüfe doch einfach, mittels einer RegEx, ob in der "RegEx" des Users, welche ja nur ein String ist, wenn du sie bekommst, gültige RegEx-Zeichen (^,$,[,], usw...) drin stehen. Das ganze muss von der Syntax her ja nur wie eine RegEx aussehen. Genau das ist meine Frage: Wie sieht der RegEx aus, mit dem ich RegExe auf Validität prüfe? Außerdem. Falls die RegEx vom User nicht valide ist, wird die RegEx eh nicht funktionieren. Und dann weißt du ja, ob der RegEx valide ist oder nicht :confused: Wie fange ich den Fehler ab, der während der Ausführung von preg_match() mit einem fehlerhaften RegEx fliegt?
18. Dezember 200816 j Genau das ist meine Frage: Wie sieht der RegEx aus, mit dem ich RegExe auf Validität prüfe? Wie fange ich den Fehler ab, der während der Ausführung von preg_match() mit einem fehlerhaften RegEx fliegt? Hm... Imho wird es ja eine Mammut-RegEx, da in einer RegEx ja so ziemlich alles drin stehen kann: Zeichen, Sonderzeichen, gequotete Sonderzeichen, usw. ... Es wird keinen Fehler bei dem Ausführen von preg_match() mit einer nicht validen regEx geben. preg_match() dient ja zur Mustererkennung. Ist die RegEx ungültig, wird das Muster nicht erkannt. Demnach ist der Rückgabewert von preg_match() = 0. Schau dir aber doch zusätzlich noch die Doku auf php.net an: PHP: preg_match - Manual hth, bytebrain Edit: Alternativ: Vielleichst wirst du hier fündig => http://regexlib.com/ Bearbeitet 18. Dezember 200816 j von bytebrain
18. Dezember 200816 j Autor Imho wird es ja eine Mammut-RegEx Deswegen frag ich lieber vorher, ob dieses Rad nicht schonmal erfunden wurde Es wird keinen Fehler bei dem Ausführen von preg_match() mit einer nicht validen regEx geben. Einspruch. Dieses Script $regex = "/[/"; if (preg_match($regex, "String")) echo "ja"; else echo "nein"; fliegt mir mit folgendem Fehler um die Ohren: Warning: preg_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 1 in C:\opt\CoCreate\OneSpace_Manager_2007\Apache\htdocs\arvid\regextest.php on line 4 Soweit soll es eben nicht kommen. Daß "nein" ausgegeben wird, hilft mir nix; ich weiß ja nicht, obs einfach nicht matcht oder tatsächlich der RegEx falsch ist.
18. Dezember 200816 j Hi, also ich würde anderst an die Sache rangehen. Und zwar in etwa genauso wie das hier im Forum funktioniert - mit vorgebenen Möglichkeiten. Allein schon aus Sicherheitsgründen ist das der bessere Weg. Ich glaub die Jungs hier Der RegExp-Evaluator - Startseite versuchen sich auch an sowas. ciao, vic
18. Dezember 200816 j Fehlermeldungen unterdrücken und preg_match auswerten. Ein fehlerhafter regex gibt FALSE zurück. $regex = "/[/"; $result = @preg_match($regex, "String"); if ($result === FALSE) { echo "Error parsing regex $regex\n"; } elseif ($result == 0) { echo "No match\n"; } else { echo "match\n"; } [/php] [code] ~> php test.php Error parsing regex /[/ [/code]
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.