I have a $foo
which is an instance of Crawler
and $foo->outerHtml()
starts with <div class="brick brick--type--test brick--id--1
. I am writing a test and I’d like to assert brick--id--1
is indeed present as a class. How could I do this? (preg_match()
on $foo->outerHtml()
invokes Cthulhu, I’d rather not)
Advertisement
Answer
Evaluate an XPATH expression against the nodes to check whether they contain the CSS class.
<?php require('vendor/autoload.php'); use SymfonyComponentDomCrawlerCrawler; $html = <<<'HTML' <!DOCTYPE html> <html> <body> <div class="brick brick--type--test brick--id--1">Hello</div> </body> </html> HTML; $crawler = new Crawler($html); $foo = $crawler->filter('body > div'); $class = 'brick--id--1'; $expr = "contains(concat(' ',normalize-space(@class),' '),' $class ')"; $result = $foo->evaluate($expr); var_dump($result); // array(1) { // [0]=> // bool(true) // } var_dump(array_sum($result) !== 0); // bool(true)