当我获得没有DomCrawler的内容时,我会得到带有诸如@click这样的自定义标记的html,但是当我使用$this->crawler->filter('something')->html()时,DomCrawler正在删除我的@click标记。
这里有一个不使用DomCrawler的示例:

下面使用的是DomCrawler:

正如您所看到的,DomCrawler正在删除所有的@单击,我如何才能阻止它呢?
发布于 2017-07-26 04:14:19
不幸的是,您不能这样做。DomCrawler在引擎盖下使用DOMDocument,并且不允许"@click“。另外:
DomCrawler将尝试自动修复您的HTML以符合官方规范。
禁用此功能的修饰符是LIBXML_HTML_NOIMPLIED,它不在DomCrawler的addHmlContent方法中使用:
//... Symfony\Component\DomCrawler\Crawler.php
$dom->loadHTML($content);
// ...在您的情况下,甚至调用@$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>https://stackoverflow.com/questions/45304897
复制相似问题