simple-html-dom :: restore_noise用于解析页面上的javascript

时间:2013-12-06 10:26:48

标签: php simple-html-dom

我想在此页面上解析一些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;
                    }

有什么想法吗? 感谢。

1 个答案:

答案 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];
                } 
            }

不是一个伟大的正则表达专家,我发现这个网站对我有很大帮助:

http://www.phpliveregex.com /