2
這是我的第一篇文章,我很抱歉,如果我做錯了,但在這裏我們去:解析CDATA從Javascript
我一直在努力應該從網站湊值的項目。這些值是javascript數組中的變量。我使用的是PHP Simple HTML DOM,它與普通腳本一起使用,但不能保存在CDATA塊中。因此,我正在尋找一種方法來擦除CDATA塊中的數據。不幸的是,我能找到的所有幫助都是針對XML文件的,而我正在從HTML文件中抓取。
我試圖刮JavaScript是一種如下:
<script type="text/javascript">
//<![CDATA[
var data = [{"value":8.41,"color":"1C5A0D","text":"17/11"},{"value":9.86,"color":"1C5A0D","text":"18/11"},{"value":7.72,"color":"1C5A0D","text":"19/11"},{"value":9.42,"color":"1C5A0D","text":"20/11"}];
//]]>
</script>
我需要刮的是「價值」在var數據-variable。
問題是我試圖替換對象上的CDATA字符串。 下面的代碼工作完全:-)
include('simple_html_dom.php');
$lines = file_get_contents('http://www.virtualmanager.com/players/7793477-danijel-pavliuk/training');
$lines = str_replace("//<![CDATA[","",$lines);
$lines = str_replace("//]]>","",$lines);
$html = str_get_html($lines);
foreach($html->find('script') as $element) {
echo $element->innertext;
}
如果需要,我會爲您提供更多的信息。
在將HTML文本傳遞給解析器之前緩衝HTML文本,然後使用search-and-replace移除'// <![CDATA ['和'//]]>'構造。他們完全沒有意義,已經有多年了。 – millimoose 2013-03-16 12:52:33
另外:你在示例URL中有奇怪的空格。這是一個錯字嗎?因爲問題可能是你根本無法加載頁面。也就是說,'$ html-> find('script')'甚至找到*任何* *? – millimoose 2013-03-16 12:53:43
這是一個錯字,我現在修復了它。我試圖刪除CDATA,但我後來得到這個錯誤:「致命錯誤:調用一個非對象的成員函數find()...」 我已經更新了我現在正在做的事。 – user1807556 2013-03-16 13:06:11