Mailinglisten-Archive |
Hallo Oliver,
Danke für die Mühe!
Oliver Schaedlich schrieb:
> gib mal ein paar genaue Beispiele, was als Eingabe nun erlaubt bzw.
> nicht erlaubt sein soll; auch, wo der Ausdruck welche zusätzlichen
> Zeichen tolerieren muss.
>
> Ich habe Deinen Ausdruck mal etwas bereinigt (unnötige Klammern,
> Escapes, Klassen etc. entfernt), wodurch er zwar etwas kürzer, aber
> auch nicht wesentlich aufschlußreicher wird. ;)
>
> ^[\w\pL/()&]{1,18}(?:(?: |-|\./){0,3}[\w\pL/()&]+\.?){0,6} ?-?(?:[ \d]{0,4}?\.?)?$
Mein Ausdruck war im Lauf der Zeit und von mir selbst ausgetüftelt,
deshalb vielleicht etwas umständlich, hat aber soweit funktioniert.
Erlaubt sein sollten bisher Namenseingaben mit mehreren Vor- oder
Nachnamen, Bindestrichen, auch Strings wie "Papst YX der V." oder "Anna
& Co.", "König Ludwig der 2." u.s.w.
Nun sollen auch Zollzeichen erlaubt sein, die viele als
Anführungszeichen benutzen nach dem Motto "Haus "Sonnenschein" " oder
der (Kneipen-)Apostroph, z.B. "Jutta's Kramladen".
Ich habe das heute morgen übergangsweise so gelöst, dass ich den im
Formular eingegebenen String zuerst wie folgt bearbeite :
$correct_string = str_replace ("\"", "\'", $original);
$correct_string = stripslashes ($correct_string);
$correct_string = strip_tags($correct_string);
Anschließend kommt folgendes:
$correct_string = rtrim($correct_string);
$correct_string = ltrim($correct_string);
$correct_string = urldecode($correct_string);
Dann habe ich meinen bisherigen regülären Ausdruck so verändert:
/^[\w\pL\/()\&\']{1,18}(([ ]|-|\.\/){0,3}[\w\pL\/()\&\']+\.?){0,6}([
])?(\-)?([ 1234567890]{0,4}?[\.]?)?$;
Habe also immer da, wo ich Buchstaben erlaube, auch Folgendes eingefügt:
\'
Nun sind der Apostroph (und damit auch die umgewandelten Zollzeichen
erlaubt). Das so hinzubekommen, ohne das Zollzeichen zu ersetzen, ist
mir nicht gelungen.
Viele Grüße
Armin
--
Armin Briatta
Fotografie und Webdesign
Kirchbergweg 2
64367 Mühltal-Trautheim
(0173) 6 54 97 10
www.briatta.de
php::bar PHP Wiki - Listenarchive