首页 > 开发 > PHP > 正文

php解析字符串里所有URL地址的方法

2024-05-04 22:37:50
字体:
来源:转载
供稿:网友

本文实例讲述了php解析字符串里所有URL地址的方法。分享给大家供大家参考。具体如下:

<?php// $html = the html on the page// $current_url = the full url that the html came from//(only needed for $repath)// $repath = converts ../ and / and // urls to full valid urlsfunction pageLinks($html, $current_url = "", $repath = false){  preg_match_all("//<a.+?href=(/"|')(?!javascript:|#)(.+?)(/"|')/i", $html, $matches);  $links = array();  if(isset($matches[2])){    $links = $matches[2];  }  if($repath && count($links) > 0 && strlen($current_url) > 0){    $pathi   = pathinfo($current_url);    $dir    = $pathi["dirname"];    $base    = parse_url($current_url);    $split_path = explode("/", $dir);    $url    = "";    foreach($links as $k => $link){      if(preg_match("/^/././", $link)){        $total = substr_count($link, "../");        for($i = 0; $i < $total; $i++){          array_pop($split_path);        }        $url = implode("/", $split_path) . "/" . str_replace("../", "", $link);      }elseif(preg_match("/^/////", $link)){        $url = $base["scheme"] . ":" . $link;      }elseif(preg_match("/^//|^.///", $link)){        $url = $base["scheme"] . "://" . $base["host"] . $link;      }elseif(preg_match("/^[a-zA-Z0-9]/", $link)){        if(preg_match("/^http/", $link)){          $url = $link;        }else{          $url    = $dir . "/" . $link;        }      }      $links[$k] = $url;    }  }  return $links;}header("content-type: text/plain");$url = "//www.jb51.net";$html = file_get_contents($url);// Gets links from the page:print_r(pageLinks($html));// Gets links from the page and formats them to a full valid url:print_r(pageLinks($html, $url, true));

希望本文所述对大家的php程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表