PHP 返回路径的一部分



我有这样的路径:

../../images/trades/general/banners/header3.jpg

如何将最后两个目录和文件名作为单个字符串返回? 我希望返回"常规/横幅/标题3.jpg"。 请记住,目录和文件名可能会有所不同。

谢谢! 瑞克

$string = '../../images/trades/general/banners/header3.jpg';
echo lastPortionOfPath($string);
function lastPortionOfPath($string, $segments= 3) {
$chunks = explode('/', $string);
$chunks = array_slice($chunks, count($chunks) - $segments, $segments);
return implode('/', $chunks);
}
$chain = "../../images/trades/general/banners/header3.jpg";
/*
*  All this regex do the same thing
*
$regex = "/^.+(/[a-zA-Z0-9]+/[a-zA-Z0-9]+/[a-zA-Z0-9]+.[a-zA-Z]+)$/";
$regex = "/^.+((/[a-zA-Z0-9]+){3}/[a-zA-Z0-9]+.[a-zA-Z]+)$/";
$regex = "/^.+((/[a-zA-Z0-9]+){3}.[a-zA-Z]+)$/";
*/

创建符合您需求的正则表达式字符串

$regex = "/^.+((/[a-zA-Z0-9]+){3}.[a-zA-Z]{2,})$/";

括号用于捕获与括号中的正则表达式匹配的所有内容,并且可以使用preg_match函数的第三个值检索所有这些值,在本例中为$matches

if(preg_match( $regex, $chain, $matches)){
// $result will be equal to "/general/banners/header3.jpg"
$result = substr($matches[1], 1, strlen($matches[1]) - 1); // remove the first /
}
echo $result; // general/banners/header3.jpg

一步一步:

路径

$path = "../../images/trades/general/banners/header3.jpg";

用斜杠分隔字符串

$path = explode('/',$path);   

读取生成的数组的大小并减去 3,因为这是您想要的部分数(1 个文件 + 2 个目录(:

$pathSize=count($path)-3;
$newPath = $path[$pathSize].'/'.$path[$pathSize+1].'/'.$path[$[pathSize+2];

显示结果

echo 'Result: '.$newPath;

最新更新