php 将 路径 .._PHP通过 realpath将相对路径转换为绝对路径的代码实例

本篇文章给大家带来的内容是关于PHP通过 realpath将相对路径转换为绝对路径的代码实例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

相对路径 -> 绝对路径:<?php

/**

* @param string $in_rel: relative directory

* @param string $out_abs: absolute directory

*/

define('PATH_MAX', 255);

function sub_rel2abs(string $in_rel, string &$out_abs) {

$i_rtn = 0; // return value

$ss_rel = ""; // for relative path build

$st_fpos = 0; // front separator index

$sv_path = []; // pide path to array

$st_pos = strpos($in_rel, DIRECTORY_SEPARATOR);

$npos = 0;

while ($npos != $st_pos) {

if ($st_pos != 0) {

array_push($sv_path, substr($in_rel, $st_fpos, $st_pos - $st_fpos));

}

// next...

$st_fpos = $st_pos; // set current pos to last pos

$st_pos++; // from next index

$st_pos = strpos($in_rel, DIRECTORY_SEPARATOR, $st_pos); // next separator index

} // while ( $npos != $st_pos )

// final separator

array_push($sv_path, substr($in_rel, $st_fpos));

$lpc = 0; // loop count

$i_max = count($sv_path);

while ($lpc < $i_max && 0 === $i_rtn) {

$ss_rel .= $sv_path[$lpc];

// relative path => relative path

$c_abs = realpath($ss_rel);

if ($c_abs === false) {

$i_rtn = -1;

} else {

$ss_rel = $c_abs;

$i_rtn = 0;

}

$lpc++;

} // while (count($sv_path)>0)

// normal ending

if (0===$i_rtn) {

$out_abs = $ss_rel; // set converted path

}

return $i_rtn;

}

// test

$inDir = "/Users/Mch/Code/php/Directory";

is_dir($inDir) || mkdir($inDir, 0777, true);

$wd = __DIR__;

chdir($inDir);

$out = "";

echo sub_rel2abs("../../../eclipse-workspace/blog.zip", $out).PHP_EOL;

echo $out.PHP_EOL;

chdir($wd);

@rmdir($inDir);

?>

output:0

/Users/Mch/eclipse-workspace/blog.zip

这里直接realpath就可以了,为什么多此一举?

相关文章推荐:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值