使用simplehtmldom尝试查找带有out和id或类的URL

时间:2014-12-01 03:43:21

标签: php html parsing dom simple-html-dom

这里的第一次海报,做了大约几个小时的搜索和尝试但是卡住了......所以对我很轻松:)

包含此页面的页面

<li onclick="javascript:trackClick(14423, 'web'); document.location='http://www.mywebsite.com';"> <img class="listing-control" src="img/url-profile-listings.png" alt="Get Directions" width="51" height="51" style="padding:4px;"> <span id="web14423">Visit Website</span> </li>

我正在尝试在li标记的document.location中获取网址http://www.mywebsite.com

关键的唯一唯一且不变的事情是span标记中的“访问网站”文本。有没有办法找到它并从onclick事件转到parent li标签到document.location属性?

任何帮助都将非常感谢!!!

谢谢,

MrMo。

1 个答案:

答案 0 :(得分:1)

当然,将其加载到SimpleHTMLDOM对象中,然后只需将<li>标记与其对齐即可。定位onclick=""属性以获取其中的值。

免责声明:我不是任何正则表达式专家。

$html_string = <<<EOT
<li onclick="javascript:trackClick(14423, 'web'); document.location='http://www.mywebsite.com';">
    <img class="listing-control" src="img/url-profile-listings.png" alt="Get Directions" width="51" height="51" style="padding:4px;">
    <span id="web14423">Visit Website</span>
</li>
EOT;

$html = str_get_html($html_string);

// after loading the html with either str_get_html or file_get_html
foreach($html->find('li') as $list) {
    $script = $list->onclick;
    preg_match('/document.location\s*=\s*\'(.*?)\';/', $script, $match);
    if(!empty($match)) {
        $url = $match[1];
        echo $url;
    }
}