zoukankan      html  css  js  c++  java
  • php不用正则表达式获取文章A标签链接的方法

    php不用正则表达式获取文章A标签链接的方法

    DOM获取链接
    不要使用正则表达式解析的HTML
    也许最大的错误时,人们作出尝试从一个网页的网址或链接文字中试图做到这一点使用正则表达式。这项工作可以做正则表达式,但是,有一个拥有整个文件妊娠多次循环的高开销。正确的方法和速度更快,无限冷却器方法是使用DOM。

    通过使用getLinks职能的DOM,可以简单地创建一个包含所有环节上的键网页,并链接作为值名称。此数组然后可以在循环数组一样创建一个列表,在任何需要的方式操纵或。

    请注意,抑制错误时使用加载HTML。这是为了抑制有关无效的HTML在DOCTYPE没有定义实体的警告。当然,在生产环境中,错误报告将被禁用错误报告设置为无。

     1 <?php
     2     function getLinks($link)
     3     {
     4         /*** return array ***/
     5         $ret = array();
     6 
     7         /*** a new dom object ***/
     8         $dom = new domDocument;
     9 
    10         /*** get the HTML (suppress errors) ***/
    11         @$dom->loadHTML(file_get_contents($link));
    12 
    13         /*** remove silly white space ***/
    14         $dom->preserveWhiteSpace = false;
    15 
    16         /*** get the links from the HTML ***/
    17         $links = $dom->getElementsByTagName('a');
    18     
    19         /*** loop over the links ***/
    20         foreach ($links as $tag)
    21         {
    22             $ret[$tag->getAttribute('href')] = $tag->childNodes->item(0)->nodeValue;
    23         }
    24 
    25         return $ret;
    26     }
    27 ?>

    类似的方法可以是使用XPath将达到同样的结果。无论哪种方式,使用DOM将会证明远远超过一般运算效率。

    实例

     1 <?php
     2     /*** a link to search ***/
     3     $link = "";
     4 
     5     /*** get the links ***/
     6     $urls = getLinks($link);
     7 
     8     /*** check for results ***/
     9     if(sizeof($urls) > 0)
    10     {
    11         foreach($urls as $key=>$value)
    12         {
    13             echo $key . ' - '. $value . '<br >';
    14         }
    15     }
    16     else
    17     {
    18         echo "No links found at $link";
    19     }
    20 ?>
  • 相关阅读:
    Ubuntu中的Gif动画录制工具
    NDT(Normal Distributions Transform)算法原理与公式推导
    激光数据匹配(MATLAB Robotics System Toolbox)
    使用正态分布变换(Normal Distributions Transform)进行点云配准
    微软Xbox One无线手柄控制机器人
    SICK LMS111激光雷达的使用
    SICK TiM561激光雷达的使用
    JAVA操作Hbase
    shell date 命令整理
    ArrayList排序
  • 原文地址:https://www.cnblogs.com/qmtx3/p/2983895.html
Copyright © 2011-2022 走看看