PHP-Snippet: stripArrayKey

Aus einem QueryString (z.B. dem $_GET) nicht gewollte Parameter löschen:


function stripArrayKey($sInput, $arrKeysToStrip = array()) {

if (count($arrKeysToStrip)<=0) {
return $sInput;
}

$arrResult = array();
parse_str($sInput, $arrResult);

foreach ($arrKeysToStrip AS $keyName) {
if (array_key_exists($keyName, $arrResult)) {
unset($arrResult[$keyName]);
}
}

return http_build_query($arrResult);
}

Vorher:

param1=value&param2=otherValue&myParam=unwanted&param3=moreValue


return stripArrayKey($sQuerystring, array('myParam','param2'));

Nachher:

param1=value&param3=moreValue

Wahlweise auch gleich viele Parameter auf einen Rutsch.

3 Gedanken zu „PHP-Snippet: stripArrayKey

  1. Michael

    Ich überlege gerade wo ich diesen Fall brauchen könnte, ich würde eher eine Liste mit benötigten Parametern übergeben wollen und nur diese zurückbekommen. Sonst übergibt irgendein Trottel mal einen weiteren Parameter und mein Script kommt durcheinander. Also eher eine Art Whiteliste und keine Blacklist.

    $resultQuery ist unbenutzt und kann weg

    Statt der foreach Schleife könntest du auch das hier nutzen:
    $arrResult = array_diff_key($arrResult, array_flip($arrKeysToStrip));

    Bei den kleinen Arrays die verwendet werden aber wahrscheinlich kein messbarer Unterschied 🙂

    Antworten
  2. Sascha Presnac

    @Michael: Danke wegen $resultQuery, das geisterte noch aus der Ursprungsfassung dort herum, habe es schlicht übersehen 😉

    Zur Whitelist: Da könnte man ein filterArrayByKeylist-Snippet draus machen 😉

    Wo man das braucht: Das hier in einer Mod zu einem OpenSource-Shopsystem, um bestimmte Parameter raus zu filtern, die ich vorher (absichtlich und mit guten Gründen) dort hereingebracht habe.

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert