0

好的,所以我制作了一个文件系统查看器。不过,我坚持这一点,除了单击我制作的 gui 上的后退按钮外,我一切正常。

所以我有一个这样的字符串

http://www.grubber.co.nz/update/index.php?dir=../developer/_social_development

该脚本将转到文件夹/developer/_social_development

但是当我想返回时,我按下返回按钮,它会返回到顶层目录,所以它会一直返回到第一个“/”,例如http://www.grubber.co.nz/update/ index.php?dir=../ 我使用此代码返回到最后一页不起作用

$dir = $_GET['dir'];
$marker = "/";
echo $str = (substr($dir, 0, (strpos($dir, $marker) + strlen($marker)))); 

它所做的只是将所有内容都删除到第一个“/”,但我希望它转到最后一个“/”,例如这是/developer/_social_development,当我单击上一个文件夹时,我希望它也是/developer字符串会根据你所在的文件夹而改变,所以我不能只删除一定数量的字符

谢谢您的帮助

4

4 回答 4

2

使用另一种方法str pos,您可以使用explode。这里完整的代码:

$dir = '../developer/_social_development';
$marker = "/";
$arrDir = explode('/', $dir);
array_pop($arrDir);
$dir2 = implode( '/', $arrDir);
echo $dir2;

结果:../开发者

于 2012-11-14T09:26:51.310 回答
0

而不是使用 strpos() 来为您提供字符串中第一次出现的字符的位置,您应该使用strrchr()来为您提供字符串中最后一次出现的字符的位置

于 2012-11-14T09:22:49.050 回答
0

不是一个最好的解决方案,我个人会使用 RegEx 方法,但如果你想使用 str 位置,你可以这样做:

$dir = $_GET['dir'];
$marker = "/";
echo $str = strrev(substr(strrev($dir), (strpos($dir, $marker) + strlen($marker))));

或基于 RegEx 的解决方案:

$dir = $_GET['dir'];
echo $str = preg_replace("/\/[^\/]+$/", "", $dir);
于 2012-11-14T09:23:46.403 回答
0
$path = '/foo/bar';
$path = $path . '/..'; // /foo/bar/..
echo realpath($path); // Shows /foo
于 2012-11-14T09:24:23.183 回答