首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DomCrawler正在删除html的一部分。

DomCrawler正在删除html的一部分。
EN

Stack Overflow用户
提问于 2017-07-25 13:31:57
回答 1查看 973关注 0票数 1

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

这里有一个不使用DomCrawler的示例:

下面使用的是DomCrawler:

正如您所看到的,DomCrawler正在删除所有的@单击,我如何才能阻止它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-26 04:14:19

不幸的是,您不能这样做。DomCrawler在引擎盖下使用DOMDocument,并且不允许"@click“。另外:

DomCrawler将尝试自动修复您的HTML以符合官方规范。

禁用此功能的修饰符是LIBXML_HTML_NOIMPLIED,它不在DomCrawler的addHmlContent方法中使用:

代码语言:javascript
复制
//... Symfony\Component\DomCrawler\Crawler.php
$dom->loadHTML($content);
// ...

在您的情况下,甚至调用@$dom->loadHTML($content, LIBXML_HTML_NOIMPLIED);也不起作用。

示例:

代码语言:javascript
复制
$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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45304897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档