Piwik\UrlHelper::getArrayFromQueryString PHP Method

getArrayFromQueryString() public static method

Returns a URL query string as an array.
public static getArrayFromQueryString ( string $urlQuery ) : array
$urlQuery string The query string, eg, `'?param1=value1¶m2=value2'`.
return array eg, `array('param1' => 'value1', 'param2' => 'value2')`
    public static function getArrayFromQueryString($urlQuery)
    {
        if (strlen($urlQuery) == 0) {
            return array();
        }
        // TODO: this method should not use a cache. callers should instead have their own cache, configured through DI.
        //       one undesirable side effect of using a cache here, is that this method can now init the StaticContainer, which makes setting
        //       test environment for RequestCommand more complicated.
        $cache = Cache::getTransientCache();
        $cacheKey = 'arrayFromQuery' . $urlQuery;
        if ($cache->contains($cacheKey)) {
            return $cache->fetch($cacheKey);
        }
        if ($urlQuery[0] == '?') {
            $urlQuery = substr($urlQuery, 1);
        }
        $separator = '&';
        $urlQuery = $separator . $urlQuery;
        //		$urlQuery = str_replace(array('%20'), ' ', $urlQuery);
        $referrerQuery = trim($urlQuery);
        $values = explode($separator, $referrerQuery);
        $nameToValue = array();
        foreach ($values as $value) {
            $pos = strpos($value, '=');
            if ($pos !== false) {
                $name = substr($value, 0, $pos);
                $value = substr($value, $pos + 1);
                if ($value === false) {
                    $value = '';
                }
            } else {
                $name = $value;
                $value = false;
            }
            if (!empty($name)) {
                $name = Common::sanitizeInputValue($name);
            }
            if (!empty($value)) {
                $value = Common::sanitizeInputValue($value);
            }
            // if array without indexes
            $count = 0;
            $tmp = preg_replace('/(\\[|%5b)(]|%5d)$/i', '', $name, -1, $count);
            if (!empty($tmp) && $count) {
                $name = $tmp;
                if (isset($nameToValue[$name]) == false || is_array($nameToValue[$name]) == false) {
                    $nameToValue[$name] = array();
                }
                array_push($nameToValue[$name], $value);
            } elseif (!empty($name)) {
                $nameToValue[$name] = $value;
            }
        }
        $cache->save($cacheKey, $nameToValue);
        return $nameToValue;
    }

Usage Example

Beispiel #1
0
 /**
  * @param InputInterface $input
  */
 protected function initHostAndQueryString(InputInterface $input)
 {
     $_GET = array();
     $hostname = $input->getOption('piwik-domain');
     Url::setHost($hostname);
     $query = $input->getArgument('url-query');
     $query = UrlHelper::getArrayFromQueryString($query);
     foreach ($query as $name => $value) {
         $_GET[$name] = $value;
     }
 }
All Usage Examples Of Piwik\UrlHelper::getArrayFromQueryString