Test /
ParseArgs
(:testpa a b c +d +e +f -g -h -i,j,k:) |
Array
(
[#] => Array
(
[0] =>
[1] => a
[2] =>
[3] => b
[4] =>
[5] => c
[6] => +
[7] => d
[8] => +
[9] => e
[10] => +
[11] => f
[12] => -
[13] => g
[14] => -
[15] => h
[16] => -
[17] => i,j,k
)
[] => Array
(
[0] => a
[1] => b
[2] => c
)
[+] => Array
(
[0] => d
[1] => e
[2] => f
)
[-] => Array
(
[0] => g
[1] => h
[2] => i,j,k
)
)
|
(:testpa positional0 positional1 a=1 b=2,3,4 test="quoted string" group={*$Group} 'positional 2':)
|
Array
(
[#] => Array
(
[0] =>
[1] => positional0
[2] =>
[3] => positional1
[4] => a
[5] => 1
[6] => b
[7] => 2,3,4
[8] => test
[9] => quoted string
[10] => group
[11] => Test
[12] =>
[13] => positional 2
)
[] => Array
(
[0] => positional0
[1] => positional1
[2] => positional 2
)
[a] => 1
[b] => 2,3,4
[test] => quoted string
[group] => Test
)
|
Arguments in any order will work the same way, $args['a'] is always '1', $args['b'] is '2', etc.:
(:testpa a=1 b=2 c=3:) (:testpa b=2 a=1 c=3:) (:testpa c=3 b=2 a=1:) |
Array
(
[#] => Array
(
[0] => a
[1] => 1
[2] => b
[3] => 2
[4] => c
[5] => 3
)
[a] => 1
[b] => 2
[c] => 3
)
Array
(
[#] => Array
(
[0] => b
[1] => 2
[2] => a
[3] => 1
[4] => c
[5] => 3
)
[b] => 2
[a] => 1
[c] => 3
)
Array
(
[#] => Array
(
[0] => c
[1] => 3
[2] => b
[3] => 2
[4] => a
[5] => 1
)
[c] => 3
[b] => 2
[a] => 1
)
|
Test some edge examples
(:testpa q=1 Q=a p=a,b,-c r='-z,-y' -s:imon :) (:testpa dup=licate xed: y="something -onething dup=unique :) (:testpa 'x'=y 'v=a' str="ing :) |
Array
(
[#] => Array
(
[0] => q
[1] => 1
[2] => Q
[3] => a
[4] => p
[5] => a,b,-c
[6] => r
[7] => -z,-y
[8] => -
[9] => s:imon
)
[q] => 1
[Q] => a
[p] => a,b,-c
[r] => -z,-y
[-] => Array
(
[0] => s:imon
)
)
Array
(
[#] => Array
(
[0] => dup
[1] => licate
[2] =>
[3] => xed:
[4] => y
[5] => "something
[6] => -
[7] => onething
[8] => dup
[9] => unique
)
[dup] => unique
[] => Array
(
[0] => xed:
)
[y] => "something
[-] => Array
(
[0] => onething
)
)
Array
(
[#] => Array
(
[0] =>
[1] => x
[2] =>
[3] => =y
[4] =>
[5] => v=a
[6] => str
[7] => "ing
)
[] => Array
(
[0] => x
[1] => =y
[2] => v=a
)
[str] => "ing
)
|
(:testpa test=parms,+with,-commas:) (:testpa test="+quoted","parms","with","-commas":) (:testpa test="+quoted,parms,with,-commas":) (:testpa test=simon,[[~simon]] :) |
Array
(
[#] => Array
(
[0] => test
[1] => parms,+with,-commas
)
[test] => parms,+with,-commas
)
Array
(
[#] => Array
(
[0] => test
[1] => +quoted
[2] =>
[3] => ,"parms","with","-commas"
)
[test] => +quoted
[] => Array
(
[0] => ,"parms","with","-commas"
)
)
Array
(
[#] => Array
(
[0] => test
[1] => +quoted,parms,with,-commas
)
[test] => +quoted,parms,with,-commas
)
Array
(
[#] => Array
(
[0] => test
[1] => simon,[[~simon]]
)
[test] => simon,[[~simon]]
)
|
Code:
Markup('testpa', 'directives', '/\\(:testpa(.*?):\\)/i', 'TestParseArgs');
function TestParseArgs($m) {
$args = ParseArgs($m[1]);
return '<:block>' . Keep(pre_r($args));
}