Browse Source

[DomCrawler] Fixed handling of relative query strings as links

Alexander 14 years ago
parent
commit
d49e306b9b
1 changed files with 14 additions and 2 deletions
  1. 14 2
      src/Symfony/Component/DomCrawler/Link.php

+ 14 - 2
src/Symfony/Component/DomCrawler/Link.php

@@ -89,11 +89,23 @@ class Link
             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;