PHP: Ersatz für die Stringsuche mit in_array()
Was vom Laster herunterfiel während der Projektarbeit entstanden ist: Ein Ersatz für in_array.
Bei einem Kunden sollte bei einem Plugin u.a. eine Blacklisting-Funktion für IP-Adressen (also ein Klassiker) integriert werden. Selbst mit auf true gesetztem strict-Parameter (vgl. PHP-Doku zu in_array) war die Rückmeldung IMMER wahr (also true), egal ob sich die gesuchte Variable tatsächlich im Array befand oder nicht.
Da bei diesem Programmteil nur ein simples Array a la
array( '127.0.0.1', '192.168.3.1', '255.255.255.1', )
benutzt wird, und nichts großartig Komplexeres, habe ich mir mit einer Ersatzfunktion geholfen. Diese macht im Prinzip nichts anderes als das Array via implode ebenfalls in eine Zeichenkette ($haystack) umzuwandeln, und mittels strpos bzw. stripos nach der zu überprüfenden Variable ($needle) zu suchen.
Das Snippet dazu wie folgt:
Ist sicher noch verbesserungswürdig, z.B. könnte man einen Test einbauen, der den Variablentyp genauer überprüft, und ggf. entspr. bessere Konvertierungsversuche durchführt, oder selbigen einfach komplett weglassen, d.h. ist also die gesuchte Variable KEIN String, dann ist das Ergebnis IMMER falsch.
Technisch aber tut es genau so wie es soll, und faktisch wird im konkreten Anwendungsfall tatsächlich nur mit Strings gearbeitet (wie ein var_dump($strRemoteIP) schon vorher bestätigen konnte).
