Example #1
0
	/**
	 * 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)";
	}