我有一条很长的路径 - /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));
它有效,但我认为有一个更好的解决方案......任何人都知道吗?
提前致谢。
答案 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);