/** * Formats parameters to PHP array. * @param string * @param string * @return string */ public static function formatArray($input, $prefix = '') { $tokenizer = new Tokenizer(array( Tokenizer::T_WHITESPACE => '\s+', Tokenizer::T_COMMENT => '/\*.*?\*/', Tokenizer::RE_STRING, 'true|false|null|and|or|xor|clone|new|instanceof', '\$[_a-z0-9\x7F-\xFF]+', // variable self::T_SYMBOL => '[_a-z0-9\x7F-\xFF]+', // string, number '=>|[^"\']', // =>, any char except quotes ), 'i'); $out = ''; $quote = TRUE; foreach ($tokenizer->tokenize($input) as $n => $token) { list($token, $name) = $token; if ($name === Tokenizer::T_COMMENT) { continue; } elseif ($name === self::T_SYMBOL && $quote && !is_numeric($token) && in_array($tokenizer->nextToken($n), array(',', '=>', ')', NULL), TRUE)) { $token = "'$token'"; } if ($name !== Tokenizer::T_WHITESPACE) { $quote = in_array($token, array('[', ',', '=', '(', '=>')); } $out .= $token; } return $out === '' ? '' : $prefix . "array($out)"; }