Fix URI parsing on multiple equal signs in pair value of query string.

This commit is contained in:
Daniele Alessandri
2013-11-12 12:46:45 +01:00
parent 298e7a14fa
commit 6fbc421b96
2 changed files with 18 additions and 1 deletions
@@ -119,7 +119,7 @@ class ConnectionParameters implements ConnectionParametersInterface
if (isset($parsed['query'])) {
foreach (explode('&', $parsed['query']) as $kv) {
$kv = explode('=', $kv);
$kv = explode('=', $kv, 2);
if (isset($kv[0], $kv[1])) {
$parsed[$kv[0]] = $kv[1];
}
@@ -174,6 +174,23 @@ class ParametersTest extends StandardTestCase
$this->assertSame($expected, ConnectionParameters::parse($uri));
}
/**
* @group disconnected
*/
public function testParsingURIWithMoreThanOneEqualSignInQueryStringPairValue()
{
$uri = 'tcp://10.10.10.10?foobar=a=b=c&persistent=1';
$expected = array(
'scheme' => 'tcp',
'host' => '10.10.10.10',
'foobar' => 'a=b=c',
'persistent' => '1',
);
$this->assertSame($expected, ConnectionParameters::parse($uri));
}
/**
* @group disconnected
* @expectedException InvalidArgumentException