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