bdk / css-xpath
Search html via CSS selector or convert css selector to xpath
Installs: 27 334
Dependents: 3
Suggesters: 0
Security: 0
Stars: 9
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ^4.0 | ^5.0 | ^6.0 | ^7.0 | ^8.0 | ^9.0
This package is auto-updated.
Last update: 2024-12-19 06:25:25 UTC
README
- Convert CSS selector to XPath
- Query HTML string (or \DOMDocument) by CSS selector
- Provide PHPUnit Assertions (once provided by PHPUnit)
Installation
composer require bdk/css-xpath
Usage
CSS to XPath
\bdk\CssXpath\CssXpath::cssToXpath('ul > li:first-child'); // returns '//ul/li[1]'
Query DOM/HTML
Example:
$html = <<<HTML <div id="article" class="block large"> <h2>Article Name</h2> <p>Contents of article</p> <ul> <li>One</li> <li>Two</li> <li>Three</li> <li>Four</li> <li><a href="#">Five</a></li> </ul> </div> HTML; // use static method var_dump(\bdk\CssXpath\CssSelect::select($html, 'ul > li:last-child [href]')); // or create and use an instance $cssSelect = new \bdk\CssXpath\CssSelect($html); $found = $cssSelect->select('ul > li:last-child [href]');
Output:
array (size=1)
0 =>
array (size=3)
'name' => string 'a' (length=1)
'attributes' =>
array (size=1)
'href' => string '#' (length=1)
'innerHTML' => string 'Five' (length=4)
Pass a last argument of true
, to return a \DOMNodeList
object instead of an array
PHPUnit
bdk\CssXpath\DOMTestCase
extends \PHPUnit\Framework\TestCase
and provids 3 assertions:
assertSelectCount($selector, $count, $actual, $message = '')
assertSelectRegExp($selector, $pattern, $count, $actual, $message = '')
assertSelectEquals($selector, $content, $count, $actual, $message = '')
These assertions were originally provided with PHPUnit 3.3, but removed with PHPUnit 5.0