Rolf B: PHP-Abfrage

Beitrag lesen

Hallo Günter,

gegen Janoschs Vorschlag mit dem Fragezeichen ist fast nichts einzuwenden, ich möchte aber erstmal auf dein Missverständnis mit dem | eingehen.

Es gibt einen PHP-Operator |, und es gibt einen Regex-Operator |. Beide bedeuten „oder“, aber für unterschiedliche Dinge.

Wenn du die Regex und den String schließt und dann den Operator setzt, ist es der PHP Operator. Den wolltest du aber nicht, und er ist auch nicht auf Strings anwendbar, sondern auf Zahlen. PHP versucht deshalb, aus deinen Regexen Zahlen zu machen, was nicht gelingt und bestenfalls 0 ergibt. Bitweises OR von 0 und 0 ergibt 0, und dann entsteht das nächste Problem: preg_match erwartet einen String als Eingabe. Spätestens jetzt gibt PHP auf.

Um den Regex-Operator zu bekommen, musst du in der Regex bleiben. Du könntest also '/^$|^L$/' schreiben. Das würde funktionieren, ist aber umständlicher als Janoschs '/^L?$/'.

Zu dem „fast nichts“: Du solltest erstmal innehalten und fragen, ob Regex das richtige Werkzeug ist. Würdest du eine Gartenbaufirma kommen lassen, um die Blumen auf deinem Balkon zu gießen? Kann man machen, es gibt vielleicht auch Balkone, wo das Sinn ergibt, aber zumeist ist es eine Kanone für einen Spatz.

Ein einfacher Stringvergleich geht auch:

if ($query_string == '' || $query_string =='L') {.....}

Beachte das ||, das ist das logische OR, das Wahrheitswerte vergleicht und etwas anderes ist als das bitweise OR, das du mit | bekommst.

Es ist mehr Schreibarbeit, dafür hat du die Blumen gegossen, ohne dafür eine Tagesbaustelle zu errichten 😉. Die Regex Maschine ist wirklich aufwändig.

Rolf

--
sumpsi - posui - obstruxi