phpbar.de logo

Mailinglisten-Archive

[php] Frage zu Regulären Ausdrücken, Zollzeichen und Apostroph

[php] Frage zu Regulären Ausdrücken, Zollzeichen und Apostroph

Sebastian Mendel lists at sebastianmendel.de
Mon Aug 24 09:31:35 CEST 2009


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