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

Php 使用simplehtmldom尝试查找带有out和id或class的URL,php,html,parsing,dom,simple-html-dom,Php,Html,Parsing,Dom,Simple Html Dom,第一次在这里张贴海报,做了几个小时的搜索和尝试,但被卡住了。。。所以对我放松点:) 用一个包含这个的页面

第一次在这里张贴海报,做了几个小时的搜索和尝试,但被卡住了。。。所以对我放松点:)

用一个包含这个的页面

  • 访问网站
  • 我正在尝试获取文档中的url。li标记的位置

    唯一一个独特且持续的关键点是span标记中的“访问网站”文本。有没有办法从onclick事件中找到document.location属性的父li标记

    任何帮助都将不胜感激

    谢谢


    MrMo。

    当然,将其加载到
    SimpleHTMLDOM
    对象中,然后将其指向
  • 标记。针对
    onclick=“
    属性获取其中的值

    免责声明:无论如何,我都不是正则表达式专家


    $html\u string=您希望在哪个事件上获取我指的url单击li或img??发布你的js代码嘿鬼!预赛。。。就是这样!昨天发布后,我试图用strtok暴力破解一个解决方案,但只是走了这么远,我想一定有一个更直截了当的方法。。。这很有效。非常感谢,我将深入阅读文档以了解更多信息(如果其他人感兴趣,请提供链接)。
    
    $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;
        }
    }