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))));

または正規表現ベースのソリューション:

$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 に答える