PHP:裁剪文件/目录路径

时间:2013-08-14 06:25:40

标签: php path split crop

我有一条很长的路径 - /home/user/www/domain.net/public_html/system/dir/file.php,我希望裁剪一下这样的事情 - /system/dir/file.php

现在我正在使用此代码:

$filename = str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, $filename);
$filename = join(DIRECTORY_SEPARATOR, array_slice(explode(DIRECTORY_SEPARATOR, $filename), -3, 3));

它有效,但我认为有一个更好的解决方案......任何人都知道吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

您可以改用正则表达式。请参阅此示例:

$sFileName  = '/home/user/www/domain.net/public_html/system/dir/file.php';
$iCropCount = 3;
$sResult    = preg_replace('#.*?((\/[^\/]+){'.$iCropCount.'})$#', '$1', $sFileName));
//var_dump($sResult);

省略了DIRECTORY_SEPARATOR的操作(因为上面的主要样本不在其中)

答案 1 :(得分:1)

我认为你只需要web目录。因此,您可以使用/public_html进行爆炸,因为它始终存在。

例如:

$filename = '/home/user/www/domain.net/public_html/system/dir/file.php';
$path = explode('/public_html', $filename);
echo $path[1];

答案 2 :(得分:0)

我找到了其他解决方案:

$filename = '/home/user/www/domain.net/public_html/system/dir/file.php';
explode($_SERVER['DOCUMENT_ROOT'], $filename);
$filename = end($filename);