rex_string::split PHP Method

split() public static method

Examples: "a b 'c d'" -> array('a', 'b', 'c d') "a=1 b='c d'" -> array('a' => 1, 'b' => 'c d')
public static split ( string $string ) : array
$string string
return array
    public static function split($string)
    {
        $string = trim($string);
        if (empty($string)) {
            return [];
        }
        $result = [];
        $spacer = '@@@REX_SPACER@@@';
        $quoted = [];
        $pattern = '@(["\'])((?:.*[^\\\\])?(?:\\\\\\\\)*)\\1@Us';
        $callback = function ($match) use($spacer, &$quoted) {
            $quoted[] = str_replace(['\\' . $match[1], '\\\\'], [$match[1], '\\'], $match[2]);
            return $spacer;
        };
        $string = preg_replace_callback($pattern, $callback, $string);
        $parts = preg_split('@\\s+@', $string);
        $i = 0;
        foreach ($parts as $part) {
            $part = explode('=', $part, 2);
            if (isset($part[1])) {
                $value = $part[1] == $spacer ? $quoted[$i++] : $part[1];
                $result[$part[0]] = $value;
            } else {
                $value = $part[0] == $spacer ? $quoted[$i++] : $part[0];
                $result[] = $value;
            }
        }
        return $result;
    }

Usage Example

Beispiel #1
0
 /**
  * Sets the arguments.
  *
  * @param string $arg_string
  */
 private function setArgs($arg_string)
 {
     $this->args = rex_string::split($arg_string);
 }
All Usage Examples Of rex_string::split