php 相对url转绝对url,PHP将相对链接转换为绝对链接 - Sprite is learning

因为一些学习和研究目的,最近在写一些数据抓取的组件,在网页上很常见的是相对链接,有时候因为所在网页和相对链接的关系不太确定,所以就需要转换一下,本来这个功能实在太简单,直接在网上搜索了一下,但是发现绝大部分代码都是错的,或者说不严谨,随便改一个目录深度就会发生错误。

这里贴一下我的解决方案:

class spider{

/*

$rel string 相对链接

$baseURL string 当前所在页面完整地址

*/

public function absoluteURL( $rel, $baseURL ): string

{

$url = parse_url($baseURL);

/* 处理当前网页链接深度 */

$depthPath = [];

foreach ( explode('/',$url['path']) as $i => $p ){

if( $p != '' ){

$depthPath[] = $p;

}

}

$pathDeep = count($depthPath);

/* 处理相对链接深度、向上深度 */

$relDepth = [];

$rootPath = false;

foreach ( explode("/",$rel) as $i => $r){

if( $i==0 && $r == '' ){

$rootPath = true;

}

if( $r != '' ){

$relDepth[] = $r;

}

}

$backPathDepth = strlen(strstr( $relDepth[0],'.' )) - 1; // 向上几层

/* 拼接 */

$new_url = $url['scheme'] . '://' . $url['host'];

if( !$rootPath ){ // 判断是否属于根目录

for( $i = 0; $i < $pathDeep - $backPathDepth; $i++ ){

$new_url .= ('/'.$depthPath[$i]);

}

}

// 排除第一个深度参数

for ( $i = 1; $i < count($relDepth); $i ++ ){

$new_url .= ('/'.$relDepth[$i]);

}

return $new_url;

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值