当我在没有DomCrawler的情况下获得内容时,我会获得带有自定义标记(如@click)的html,但当我使用$this->crawler->filter('something')->html()时,DomCrawler会删除我的@click标记。下面是一个不使用DomCrawler的示例:
$this->crawler->filter('something')->html()
下面是使用DomCrawler的示例:
正如您所看到的,DomCrawler正在删除所有的@点击,我该如何停止呢?
rn0zuynd1#
很遗憾,您不能。DomCrawler在幕后使用DOMDocument,不允许"@click "。另外:DomCrawler将尝试自动修复您的HTML以匹配官方规范。禁用此功能的修饰符为LIBXML_HTML_NOIMPLIED,它未在DomCrawler的addHmlContent方法中使用:
addHmlContent
//... Symfony\Component\DomCrawler\Crawler.php $dom->loadHTML($content); // ...
甚至调用@$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED);在您的情况下也不起作用。示例:
@$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED);
$html = <<<TEST <html> <div class="test" @click="something"></div> </html> TEST; dump($html); //<html>\n // <div class="test" @click="something"></div>\n //</html> // Symfony Crawler $crawler = new \Symfony\Component\DomCrawler\Crawler(); $crawler->addHtmlContent($html); dump($crawler->html()); //<body>\n // <div class="test"></div>\n //</body> // Custom crawler with LIBXML_HTML_NOIMPLIED $crawler = new \MyCrawler\Crawler(); $crawler->addHtmlContent($html); dump($crawler->html()); // <div class="test"></div>
jgwigjjp2#
您可以将@click替换为x-on:click,这具有完全相同的效果,同时也是有效的HTML。
@click
x-on:click
2条答案
按热度按时间rn0zuynd1#
很遗憾,您不能。DomCrawler在幕后使用DOMDocument,不允许"@click "。另外:
DomCrawler将尝试自动修复您的HTML以匹配官方规范。
禁用此功能的修饰符为LIBXML_HTML_NOIMPLIED,它未在DomCrawler的
addHmlContent
方法中使用:甚至调用
@$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED);
在您的情况下也不起作用。示例:
jgwigjjp2#
您可以将
@click
替换为x-on:click
,这具有完全相同的效果,同时也是有效的HTML。