CssXpath
- Convert CSS selector to XPath
- Query HTML string (or \DOMDocument) by CSS selector
- Provide PHPUnit Assertions (once provided by PHPUnit)
, (*1)
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:, (*2)
$html = <<<HTML
<div id="article" class="block large">
Article Name
Contents of article, (*3)
</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:, (*4)
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, (*5)
PHPUnit
bdk\CssXpath\DOMTestCase
extends \PHPUnit\Framework\TestCase
and provids 3 assertions:, (*6)
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, (*7)