Browse Source

[CssSelector] ignored an optional whitespace after a combinator

Fabien Potencier 13 năm trước cách đây
mục cha
commit
c642a5ec19

+ 5 - 0
src/Symfony/Component/CssSelector/CssSelector.php

@@ -153,6 +153,11 @@ class CssSelector
             } elseif (in_array($peek, array('+', '>', '~'))) {
                 // A combinator
                 $combinator = (string) $stream->next();
+
+                // Ignore optional whitespace after a combinator
+                while (' ' == $stream->peek()) {
+                    $stream->next();
+                }
             } else {
                 $combinator = ' ';
             }

+ 2 - 0
tests/Symfony/Tests/Component/CssSelector/CssSelectorTest.php

@@ -64,6 +64,8 @@ class CssSelectorTest extends \PHPUnit_Framework_TestCase
             array('h1 .foo', "h1/descendant::*[contains(concat(' ', normalize-space(@class), ' '), ' foo ')]"),
             array('h1 #foo', "h1/descendant::*[@id = 'foo']"),
             array('h1 [class*=foo]', "h1/descendant::*[contains(@class, 'foo')]"),
+            array('div>.foo', "div/*[contains(concat(' ', normalize-space(@class), ' '), ' foo ')]"),
+            array('div > .foo', "div/*[contains(concat(' ', normalize-space(@class), ' '), ' foo ')]"),
         );
     }
 }