Mailinglisten-Archive |
On 22.08.2009 08:20, Armin Briatta wrote: > 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 persönlich sehe hier wenig Sinn das ganze in irgendeiner Art und Weiße zu begrenzen - egal was oder wie du es machst, musst du eh immer beim Ausgeben darauf achten es ordentlich zu kodieren/escapen (in diesem Fall wohl mit htmlspecialchars()) ich sehe das einfach als wenig zielführenden aber extrem fehlernafälligen und aufwendigen Vorgang der zudem auch nur die Benutzerfreundloichkeit verringert (das eben nicht alle Zeichen gehen) > 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); wie wäre es einfach mit trim($correct_string)? > $correct_string = urldecode($correct_string); urldecode() ist hier überflüssig, oder wird es irgendwo explizit URL-Kodiert? > 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. aber warum so kompliziert? warum erlaubst du nicht einfach alle Zeichen die du erlauben willst an allen Stellen? /^[-\w\pa-z0-9()&'´`. \/]+$/i -- Sebastian Mendel
php::bar PHP Wiki - Listenarchive