2014-04-28 78 views
1

想知道是否有其他人遇到過這個問題,以及他們是否找到了解決方案。QueryPath使用HTML字符串中斷腳本標記

我有一個應用程序使用QueryPath的htmlqp()方法解析網頁(我不控制)。

我遇到的問題是,任何時候一個頁面被解析,碰巧有一個內嵌的<script>標籤(帶有一些javacript標籤),它也包含某種HTML字符串,QueryPath的writeHTML()方法嘗試通過在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> 

-becomes-

<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>"); 
    }); 

顯然後者破裂demonstrably。

有誰知道如何讓QueryPath不這樣做?或者也許只是忽略一般的<script>標籤的內容?

謝謝。

回答

1

我們建議使用HTML5-PHP庫來解析HTML。內置於PHP中的舊版HTML4.01解析器(通過libxml)對於JavaScript並不是特別好。但是更新的HTML5 PHP庫是爲處理這種情況而構建的。

這裏的圖書館:

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

和馬特·法里納寫了一個很好的介紹使用這兩個庫一起:

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

+0

這美麗的工作。謝謝! – RavenHursT

+0

任何想法如何防止它在嵌入式樣式標籤中編碼「>」s?我在整個css選擇器中獲得了'>'的菜單。 是否有標誌或我可以發送到saveHTML()? – RavenHursT