【问题标题】:QueryPath breaks script tags with HTML strings in themQueryPath 用其中的 HTML 字符串打破脚本标签
【发布时间】:2014-04-28 16:50:59
【问题描述】:

想知道是否有其他人遇到过这个问题以及他们是否找到了解决方案。

我有一个使用 QueryPath 的 htmlqp() 方法解析网页(我无法控制)的应用程序。

我遇到的问题是,任何时候解析的页面恰好有一个内联 <script> 标记,其中包含一些 javacript,其中还引用了某种 HTML 字符串,QueryPath 的 @987654323 @ 方法试图通过在 javascript 中添加换行符、关闭标签和其他废话来“修复”HTML,这反过来又破坏了页面上的所有 javascript(在某些情况下,HTML)。

例如:

<script>
     var $jQ = jQuery.noConflict();
     // Use jQuery via $jQ(...)
     $jQ(document).ready(function(){
       $jQ("#mktFrmSubmit").wrap("<div class='buttonSubmit'></div>");
       $jQ(".buttonSubmit").prepend("<span></span>");
     });
   </script>

-变成-

<script>
     var $jQ = jQuery.noConflict();
     // Use jQuery via $jQ(...)
     $jQ(document).ready(function(){
       $jQ("#mktFrmSubmit").wrap("<div class='buttonSubmit'></script>
</div>");
       $jQ(".buttonSubmit").prepend("<span></span>");
     });

显然,后者明显破裂。

有谁知道如何阻止 QueryPath 这样做?或者也许让它忽略 &lt;script&gt; 标签正文中的一般内容?

谢谢。

【问题讨论】:

    标签: php html-parsing querypath


    【解决方案1】:

    我们建议使用 HTML5-PHP 库来解析 HTML。 PHP 中内置的旧 HTML4.01 解析器(通过 libxml)对于 JavaScript 来说并不是特别好。但较新的 HTML5 PHP 库是为处理此类情况而构建的。

    这是图书馆:

    https://github.com/Masterminds/html5-php

    Matt Farina 写了一篇很好的介绍如何结合使用这两个库:

    http://engineeredweb.com/blog/2014/querypath-html5-php/

    【讨论】:

    • 知道如何防止它在行内样式标签中编码“>”吗?我在整个 CSS 选择器中都得到了 &amp;gt; 的菜单。有没有我可以发送到 saveHTML() 的标志或其他东西?
    猜你喜欢
    • 2012-11-06
    • 2018-12-28
    • 2015-01-26
    • 1970-01-01
    • 2010-12-12
    • 2011-03-11
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    相关资源
    最近更新 更多