Symfony\Component\CssSelector\Parser::cssToXpath PHP Метод

cssToXpath() публичный статический Метод

public static cssToXpath ( $cssExpr, $prefix = 'descendant-or-self::' )
    public static function cssToXpath($cssExpr, $prefix = 'descendant-or-self::')
    {
        if (is_string($cssExpr)) {
            if (preg_match('#^\\w+\\s*$#u', $cssExpr, $match)) {
                return $prefix . trim($match[0]);
            }
            if (preg_match('~^(\\w*)#(\\w+)\\s*$~u', $cssExpr, $match)) {
                return sprintf("%s%s[@id = '%s']", $prefix, $match[1] ? $match[1] : '*', $match[2]);
            }
            if (preg_match('#^(\\w*)\\.(\\w+)\\s*$#u', $cssExpr, $match)) {
                return sprintf("%s%s[contains(concat(' ', normalize-space(@class), ' '), ' %s ')]", $prefix, $match[1] ? $match[1] : '*', $match[2]);
            }
            $parser = new self();
            $cssExpr = $parser->parse($cssExpr);
        }
        $expr = $cssExpr->toXpath();
        // @codeCoverageIgnoreStart
        if (!$expr) {
            throw new SyntaxError(sprintf('Got None for xpath expression from %s.', $cssExpr));
        }
        // @codeCoverageIgnoreEnd
        if ($prefix) {
            $expr->addPrefix($prefix);
        }
        return (string) $expr;
    }

Usage Example

Пример #1
0
 public function testCssToXpath()
 {
     $this->assertEquals('descendant-or-self::h1', Parser::cssToXpath('h1'));
     $this->assertEquals("descendant-or-self::h1[@id = 'foo']", Parser::cssToXpath('h1#foo'));
     $this->assertEquals("descendant-or-self::h1[contains(concat(' ', normalize-space(@class), ' '), ' foo ')]", Parser::cssToXpath('h1.foo'));
     $this->assertEquals('descendant-or-self::foo:h1', Parser::cssToXpath('foo|h1'));
 }
All Usage Examples Of Symfony\Component\CssSelector\Parser::cssToXpath