我想在此页面上解析一些javascript: http://www.chrystals.co.im/residential/Ramsey/House/Gardeners-Lane-Ramsey1117/view-map/1117
但是,在解析dom时,simple_html_dom会删除它认为噪声的内容,因此不允许我获取脚本标记的内部文本。
似乎有一种功能可以恢复这种噪音,虽然没有记录,称为restore_noise。
它似乎没有任何效果。我已经尝试在整个页面上恢复噪音:
$mappage = simple_html_dom::restore_noise($mappage);
并在解析循环中:
$url = http://www.chrystals.co.im/residential/Ramsey/House/Gardeners-Lane-Ramsey1117/view-map/1117
$mappage = file_get_html($url);
foreach($mappage->find('script[!src]') as $s) {
$s = simple_html_dom::restore_noise($s);
$x = $s->plaintext;
}
有什么想法吗? 感谢。
答案 0 :(得分:1)
最后放弃了simple_html_dom方法,并使用了一些老式的preg_matching!
$viewoptions = $detail->find('h4.view-options',0);
foreach($viewoptions->find('a') as $element) {
if(preg_match('/view-map/', $element->href)){
$mapurl = $baseurl.$element->href;
$item['mapurl'] = $mapurl;
$mappage = file_get_contents($mapurl);
$pattern = '/_geocoder_addMarker\(.*[0-9]\.[0-9]*/';
preg_match($pattern, $mappage, $matches);
$pattern = '/_geocoder_addMarker\(/';
$latlng = preg_replace($pattern,"" ,$matches[0]);
$latlng = explode(",", $latlng);
$item['lat'] = $latlng[0];
$item['lng'] = $latlng[1];
}
}
不是一个伟大的正则表达专家,我发现这个网站对我有很大帮助: