代码之家  ›  专栏  ›  技术社区  ›  mrpatg

用PHP获取特定链接的目的地

  •  0
  • mrpatg  · 技术社区  · 15 年前

    我试图用PHP获取链接(静态)的目标(动态)

    我不知道最好的方法是什么。

    链接是

    <a href=page.php?XXYYYYYYY>LinkName</a>
    

    x是字母,y是数字(两者的长度可能不同)。但LinkName始终保持不变。

    Regex是这里最好的选择吗?还是有更好的方法?

    4 回复  |  直到 15 年前
        1
  •  5
  •   Pekka    15 年前

    我会使用像php那样的DOM解析器 built in one simpleHTMLDOMParser 提取链接,以及 parse_url() 要分析URL,请执行以下操作:

    此函数解析一个URL并返回一个关联数组,该数组包含存在的URL的任何组件。

        2
  •  2
  •   Blair McMillan    15 年前

    Regex不是最好的方法。使用HTML解析器,例如 DomDocument .

        3
  •  2
  •   Gordon Haim Evgi    15 年前

    如果您的HTML是有效的,您可以使用simpleXML轻松地做到这一点。

    $html = <<< HTML
    <ul>
        <li><a href="page.php?XX">Link1</a></li>
        <li><a href="page.php?YY">Link2</a></li>
        <li><a href="page.php?ZZ">Link3</a></li>
    </ul>
    HTML;
    

    然后

    $doc = simplexml_load_string($html);
    $links = $doc->xpath('//a/@href');
    foreach ($links as $link) {
        $url = parse_url($link);
        var_dump($url['query']);
    }
    

    用于输出

    string(2) "XX"
    string(2) "YY"
    string(2) "ZZ"
    

    如果有效的HTML不是一个选项,请尝试XML reader、dom或simpleHTML(如pekka建议)

        4
  •  0
  •   Marcos Placona    15 年前

    此模式将只获取href之后的内容,直到链接名

    href=([\w.?]+)