1

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

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

我遇到的问题是,每当解析的页面碰巧有一个<script>带有一些 javacript 的内联标签,其中也引用了某种 HTML 字符串时,QueryPath 的writeHTML()方法会尝试“修复”HTML通过在 javascript 中添加换行符、关闭标签和其他废话,这反过来会破坏页面上的所有 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 这样做?或者也许让它忽略<script>一般标签正文中的内容?

谢谢。

4

1 回答 1

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/

于 2014-04-29T14:10:32.600 回答