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

从字符串中提取超链接的Php函数

  •  0
  • Pau  · 技术社区  · 7 年前

    我需要从html字符串提取链接的功能。 例子:

    字符串:

    <!-- BEGIN PARTNER PROGRAM - DO NOT CHANGE THE PARAMETERS OF THE HYPERLINK -
    -> <a href='http://www.link.com' target='_blank'>text</a> <img 
    src='http://www.linkimage.com' BORDER='0' WIDTH='1' HEIGHT='1' /> <!-- END 
    PARTNER PROGRAM --> 
    

    需要提取:

    http://www.link.com
    

    谢谢

    2 回复  |  直到 7 年前
        1
  •  0
  •   Teo Mihaila    7 年前
    $string = "<!-- BEGIN PARTNER PROGRAM - DO NOT CHANGE THE PARAMETERS OF THE HYPERLINK -
    -> <a href='http://www.link.com' target='_blank'>text</a> <img 
    src='http://www.linkimage.com' BORDER='0' WIDTH='1' HEIGHT='1' /> <!-- END 
    PARTNER PROGRAM --> ";
    
        $link = explode('<a href=\'', $string)[1];
        $link = explode('\'',$link)[0];
        echo $link;
    
        $linkimage = explode('src=\'', $string)[1];
        $linkimage = explode('\'',$linkimage)[0];
        echo $linkimage;
    
        2
  •  0
  •   acidofil    7 年前

    快速n肮脏方式:

    preg_match_all('~href=([\'"])([^\'"]+)\\1~is', $htmlString, $matches); 
    
    print_r($matches[2]);
    

    http://php.net/manual/en/domdocument.getelementsbytagname.php http://php.net/manual/en/simplexmlelement.xpath.php 等等

    正确方法的问题是,在解析之前需要整理html。在某些情况下,甚至php本机 http://php.net/manual/en/book.tidy.php 未能正确执行此操作。