diff --git a/src/Symfony/Component/DomCrawler/Link.php b/src/Symfony/Component/DomCrawler/Link.php index 9620322b06bb..bc4d8419f8e1 100644 --- a/src/Symfony/Component/DomCrawler/Link.php +++ b/src/Symfony/Component/DomCrawler/Link.php @@ -89,11 +89,23 @@ public function getUri() return $this->currentUri; } - // only an anchor or a query string - if (in_array($uri[0], array('?', '#'))) { + // only an anchor + if ('#' === $uri[0]) { return $this->currentUri.$uri; } + // only a query string + if ('?' === $uri[0] ) { + $baseUri = $this->currentUri; + + // remove the query string from the current uri + if (false !== ($pos = strpos($this->currentUri, '?'))) { + $baseUri = substr($this->currentUri, 0, strpos($this->currentUri, '?')); + } + + return $baseUri.$uri; + } + // absolute path if ('/' === $uri[0]) { return preg_replace('#^(.*?//[^/]+)(?:\/.*)?$#', '$1', $this->currentUri).$uri;