PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Regular Expressions funktionieren nicht?!


Goyko
14.12.2003, 05:50
Hallo zusammen,

ich werkel nun schon seit ein paar Tagen mit der neuen Gamma-Version herum und so langsam gehts ans Eingemachte :)

So kam ich heute nun zu den userdefinierten Profilfeldern, bei denen ich die PLZ mit eingeben lannsen möchte.
Und zwar mit mindestens 2 Stellen und max. 5 Stellen...


In diesem Thread hier (http://www.vbulletin-germany.com/forum/showthread.php?s=&threadid=7993) hab ich mich mal in die Thematik eingelesen und kam für mich zu der Lösung:

^\d{2,5}

Flux editiert und einen neuen User registriert, und dabei absichtlich ein 7-stelliges Buchstaben/Zahlen WirrWarr einegeben.

Überraschung:
Keine Fehlermeldung, alles wurde genau SO gespeichert.

Hm... vielleicht bin ich ja doch zu blöd :)

Oder funktionieren die Regular Expressions noch gar nicht?

Wäre toll, einen kurzen Tipp zu kriegen, ob ich was falsch mache oder ob ich umsonst teste und das erst in einer späteren Release geht?!

Viele Gruesse
Goyko

pogo
14.12.2003, 12:56
Gib

^\d{2,5}$

als Ausdruck ein.

Goyko
14.12.2003, 17:04
Original geschrieben von pogo
Gib

^\d{2,5}$

als Ausdruck ein.

Hi Pogo,

hab's so eingetragen... leider ohne Erfolg :-(

Das (akzeptierte) Ergebnis sieht so aus:
PLZ : gjh8496

Also leider keine Überprüfung.
Ich finde aber auch nichts im Bugtracker zu den Regular Expresions.

pogo
14.12.2003, 20:44
Kannst du bitte einen Link zu einer phpinfo.php angeben?

Du findest die Datei im extras Verzeichnis von vBulletin 2.

Goyko
14.12.2003, 22:27
Original geschrieben von pogo
Kannst du bitte einen Link zu einer phpinfo.php angeben?

Du findest die Datei im extras Verzeichnis von vBulletin 2.

Ahoi,

der (Entwicklungs)-Server ist passwortgeshützt.

PHP version ist 4.1.2 (Debian-Modul)

Liegts vielleicht daran?

pogo
14.12.2003, 23:18
Dann guck mal, ob du da folgenden Eintrag findest:

PCRE (Perl Compatible Regular Expressions) Support enabled

Obwohl ich mir nicht sicher bin, ob es damit zusammenhängen kann.
Mit aktuellen PHP Versionen klappt es jedenfalls einwandfrei.

Goyko
15.12.2003, 19:16
Da steht:
PCRE (Perl Compatible Regular Expressions) Support enabled
PCRE Library Version 3.4 22-Aug-2000

Scheint also was älter zu sein ;)
Wie ist denn im aktuellen PHP die aktuelle PCRE Library Version?

Ich hab mir zwischenzeitlich auch überlegt, dass eine (funktionierende) Einschränkung der PLZ dieser Art gar nicht so geschickt wäre, weil ja die anderen deutschsprachigen Länder (z.B. CH,A) ja ganz andere Postleitzahlen haben.

Trotzdem ganz herzlichen Dank für die Hilfe!

pogo
15.12.2003, 19:42
Bei mir steht

PCRE Library Version 4.3 21-May-2003

da.

Mit PCRE Library Version 3.92 11-Sep-2002 geht es auch.


Aber wie gesagt, weiß ich auch nicht, ob es damit zusammenhängt. Das könnte man nach einem Update bei dir in Erfahrung bringen, was wiederum dein Hoster vornehmen müsste.

Goyko
15.12.2003, 19:56
Grinsel ...

wir sind unser eigener Hoster... dedizierter Server...

Problem ist nur bei diesen Debian-Packages ist hat die letzte stable von PHP die 4.1.2 ...

Alles andere ist noch zu buggy...

Wir werden dann wohl demnächst, bevor das Board richtig online geht, nur das PHP updaten - und damit leider auch ne Menge neuer Fehler bekommen, die in den alten Versionen noch nicht drin waren :(

Bis denne...

martin
15.12.2003, 20:13
hallo, das dürfte nix mit der pcre version zu tun haben.
die ist zwar alt, aber reguläre ausdrücke gibt es schon deutlich länger.

versuchs mal ohne vB

erstell ne neue php datei:


<?php
error_reporting(E_ALL);

/* der reguläre ausdruck */

$regex = '^\d{2,5}$';


if (!preg_match('#'.$regex.'#siU', stripslashes(trim($_GET['test']))))
{
echo 'Die Zeichenkette entspricht <b>nicht</b> den Anforderungen des regulären Ausdrucks.';
}
else
{
echo 'Die Zeichenkette entspricht den Anforderungen des regulären Ausdrucks.';
}
?>


du kannst den regulären ausdruck in der variablen $regex anpassen. die anführungszeichzen ( ' ) an anfang und ende sind nicht teil des ausdruck, die werden hier nur für die variable benötigt.

ruf die datei dann im browser mit datei.php?test=zeichenkette auf.

martin
15.12.2003, 20:18
Original geschrieben von Goyko
Grinsel ...

[...]

Problem ist nur bei diesen Debian-Packages ist hat die letzte stable von PHP die 4.1.2 ...

Alles andere ist noch zu buggy...
[...]

Bis denne...

"woody"?

php 4.1.2 ist alt und hat ne menge fehler.
hol ne aktuellere version aus unstable/testing.


Ich hab mir zwischenzeitlich auch überlegt, dass eine (funktionierende) Einschränkung der PLZ dieser Art gar nicht so geschickt wäre, weil ja die anderen deutschsprachigen Länder (z.B. CH,A) ja ganz andere Postleitzahlen haben.


das funktioniert aber auch, nur ist der ausdruck dann etwas umfangreicher.
dazu müsstest du aber zunächst das format der postleitzahlen rausfinden.

Goyko
16.12.2003, 03:56
Hallo Martin,

ich hab die Datei, wie Du sie beschrieben hast, angelegt und getestet.

Alles wird richtig ausgewertet...PHP-Version scheint also dafür genügend "uptodate" zu sein.

Hm...also doch ein Fehler im VBulletin ??

In der Bugliste find ich nix dazu. :(

martin
17.12.2003, 22:31
das merkwürdige ist aber, dass vB eigentlich auch nichts anderes als mein testskript macht. und scheinbar bist du bisher der einzige mit diesem problem.
allerdings werden reguläre ausdrücke überall in vB verwendet. deshalb funktioniert das zumindest grundsätzlich.
ist eine etwas merkwürdige geschichte.

eine andere möglichkeit wäre, dass der ausdruck vielleicht nicht richtig abgespeichert wird.

du kannst dir das in phpmyadmin ansehen.
in der tabelle <präfix>profilefield sollte in der spalte "regex" der ausdruck stehen.