- inputoutputexpected
PHP URI Template Parser
Expansion Tests
71 out of 71 pass (0 failures)
Vars for standard tests
Array
(
[var] => value
[hello] => Hello World!
[undef] =>
[empty] =>
[list] => Array
(
[0] => val1
[1] => val2
[2] => val3
)
[keys] => Array
(
[key1] => val1
[key2] => val2
)
[path] => /foo/bar
[x] => 1024
[y] => 768
[foo] => fred
[foo2] => That's right!
[base] => http://example.com/home/
)
Simple expansion with comma-separated values
-
{var}valuevalue
-
{hello}Hello%20World%21Hello%20World%21
-
{path}/here%2Ffoo%2Fbar/here%2Ffoo%2Fbar/here
-
{x,y}1024,7681024,768
-
{var=default}valuevalue
-
{undef=default}defaultdefault
-
{list}val1,val2,val3val1,val2,val3
-
{list*}val1,val2,val3val1,val2,val3
-
{list+}list.val1,list.val2,list.val3list.val1,list.val2,list.val3
-
{keys}key1,val1,key2,val2key1,val1,key2,val2
-
{keys*}key1,val1,key2,val2key1,val1,key2,val2
-
{keys+}keys.key1,val1,keys.key2,val2keys.key1,val1,keys.key2,val2
Reserved expansion with comma-separated values
-
{+var}valuevalue
-
{+hello}Hello%20World!Hello%20World!
-
{+path}/here/foo/bar/here/foo/bar/here
-
{+path,x}/here/foo/bar,1024/here/foo/bar,1024/here
-
{+path}{x}/here/foo/bar1024/here/foo/bar1024/here
-
{+empty}/here/here/here
-
{+undef}/here/here/here
-
{+list}val1,val2,val3val1,val2,val3
-
{+list*}val1,val2,val3val1,val2,val3
-
{+list+}list.val1,list.val2,list.val3list.val1,list.val2,list.val3
-
{+keys}key1,val1,key2,val2key1,val1,key2,val2
-
{+keys*}key1,val1,key2,val2key1,val1,key2,val2
-
{+keys+}keys.key1,val1,keys.key2,val2keys.key1,val1,keys.key2,val2
Path-style parameters, semicolon-prefixed
-
{;x,y};x=1024;y=768;x=1024;y=768
-
{;x,y,empty};x=1024;y=768;empty;x=1024;y=768;empty
-
{;x,y,undef};x=1024;y=768;x=1024;y=768
-
{;list};val1,val2,val3;val1,val2,val3
-
{;list*};val1;val2;val3;val1;val2;val3
-
{;list+};list=val1;list=val2;list=val3;list=val1;list=val2;list=val3
-
{;keys};key1,val1,key2,val2;key1,val1,key2,val2
-
{;keys*};key1=val1;key2=val2;key1=val1;key2=val2
-
{;keys+};keys.key1=val1;keys.key2=val2;keys.key1=val1;keys.key2=val2
Form-style parameters, ampersand-separated
-
{?x,y}?x=1024&y=768?x=1024&y=768
-
{?x,y,empty}?x=1024&y=768&empty=?x=1024&y=768&empty=
-
{?x,y,undef}?x=1024&y=768?x=1024&y=768
-
{?list}?list=val1,val2,val3?list=val1,val2,val3
-
{?list*}?val1&val2&val3?val1&val2&val3
-
{?list+}?list=val1&list=val2&list=val3?list=val1&list=val2&list=val3
-
{?keys}?keys=key1,val1,key2,val2?keys=key1,val1,key2,val2
-
{?keys*}?key1=val1&key2=val2?key1=val1&key2=val2
-
{?keys+}?keys.key1=val1&keys.key2=val2?keys.key1=val1&keys.key2=val2
Hierarchical path segments, slash-separated
-
{/var}/value/value
-
{/var,empty}/value//value/
-
{/var,undef}/value/value
-
{/list}/val1,val2,val3/val1,val2,val3
-
{/list*}/val1/val2/val3/val1/val2/val3
-
{/list*,x}/val1/val2/val3/1024/val1/val2/val3/1024
-
{/list+}/list.val1/list.val2/list.val3/list.val1/list.val2/list.val3
-
{/keys}/key1,val1,key2,val2/key1,val1,key2,val2
-
{/keys*}/key1/val1/key2/val2/key1/val1/key2/val2
-
{/keys+}/keys.key1/val1/keys.key2/val2/keys.key1/val1/keys.key2/val2
Label expansion, dot-prefixed
-
X{.var}X.valueX.value
-
X{.empty}X.X.
-
X{.undef}XX
-
X{.list}X.val1,val2,val3X.val1,val2,val3
-
X{.list*}X.val1.val2.val3X.val1.val2.val3
-
X{.list*,x}X.val1.val2.val3.1024X.val1.val2.val3.1024
-
X{.list+}X.list.val1.list.val2.list.val3X.list.val1.list.val2.list.val3
-
X{.keys}X.key1,val1,key2,val2X.key1,val1,key2,val2
-
X{.keys*}X.key1.val1.key2.val2X.key1.val1.key2.val2
-
X{.keys+}X.keys.key1.val1.keys.key2.val2X.keys.key1.val1.keys.key2.val2
Simple Expansion
-
{foo}fredfred
-
{foo,foo}fred,fredfred,fred
-
{bar,foo}fredfred
-
{bar=wilma}wilmawilma
Reserved Expansion
-
{foo2}That%27s%20right%21That%27s%20right%21
-
{+foo2}That's%20right!That's%20right!
-
{base}indexhttp%3A%2F%2Fexample.com%2Fhome%2Findexhttp%3A%2F%2Fexample.com%2Fhome%2Findex
-
{+base}indexhttp://example.com/home/indexhttp://example.com/home/index