获取某url上所有连接,并自动补全

<?php
function microtime_float()
{
    list($usec, $sec) = explode(" ", microtime());
    return ((float)$usec + (float)$sec);
}

$time_start = microtime_float();

$url="http://www.52sunny.net/story/";
$str=strtolower(file_get_contents($url));

$time_end1 = microtime_float();


$str=preg_replace("//s+/is"," ",$str);
$str=preg_replace("/ +/"," ",$str);
//获取a
preg_match_all("/<a.*?href=/"?/'?(.*?)[/"|/'| |>]/",$str,$arr);
for($i=0;$i<count($arr[1]);$i++){
 if(preg_match("/^http:.*/",$arr[1][$i])){
  $arr_urls[]=$arr[1][$i];
 }elseif(preg_match("/^//.*/",$arr[1][$i])){
  $arr_urls[]="http://".$_SERVER['HTTP_HOST'].$arr[1][$i];
 }elseif(preg_match("/^/.//.*/",$arr[1][$i])){
  $arr_urls[]=$_SERVER['HTTP_HOST'].$_SERVER["SCRIPT_URL"].$arr[1][$i];
 }elseif(preg_match("/^/././/.*/",$arr[1][$i])){
  $xxx=preg_replace("/((/././/)+)(.*)/","//3",$arr[1][$i]);
  preg_match_all("/((/././/)+).*/",$arr[1][$i],$arr_t);
  $x=array();
  $x=explode("../",$arr_t[1][0]);
  $x_num=count($x)-1;//取../的个数,以获取前面的地址
  $y=explode("/",$_SERVER["REQUEST_URI"]);
  $y_num=count($y)-1;
  $t=$y_num-$x_num;
  for($i=2;$i<=$t;$i++)
   $str_=$y[$i]?"/".$y[$i]:$y[$i];
  if($str_)
   $arr_urls[]="http://".$_SERVER['HTTP_HOST']."/".$str_.$xxx;
 }elseif(preg_match("/.*?:.*/",$arr[1][$i])){
  $arr_urls[]=$arr[1][$i];
 }else{
  $arr_urls[]="http://".$_SERVER['HTTP_HOST']."/".$arr[1][$i];
 }
}
//print_r($arr_urls);

 

$time_end = microtime_float();
$time = $time_end - $time_start;
$time1 = $time_end1 - $time_start;
$x_time = $time - $time1;
echo "Did nothing in $time seconds/r/n";
echo "下载 in $time1 seconds/r/n";

echo "计算 in $x_time seconds/r/n";
?> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值