0

私は次のようなパスを持っています:

$path='somefolder/foo/bar/lastdir';

最後の部分を削除したいので、次のようにします。

$path='somefolder/foo/bar';

1つ上のフォルダに行ったように。

私は本当にphpの初心者です。おそらくその機能は1つだけですが、どこにも見つかりません。

4

7 に答える 7

5

これを試すことができます(テスト済みで、期待どおりに動作します):

$path = 'somefolder/foo/haha/lastone';
$parts = explode('/', $path);
array_pop($parts);
$newpath = implode('/', $parts);

$newpathが含まれるようになりsomefolder/foo/hahaました。

于 2012-07-23T18:35:55.960 に答える
2

使用する :

dirname(dirname('somefolder/foo/haha/lastone/somescript.php'));

これは返されるはずです:

somefolder/foo/haha/
于 2012-07-23T18:41:37.023 に答える
2

これはテストされていませんが、試してください:

$path_array = explode('/',$path);
array_pop($path_array);
$path = implode('/',$path_array);
于 2012-07-23T18:35:55.620 に答える
1

最後の部分が変化する場合は、おそらく正規表現関数を使用するのが適切でしょう。試す

$pattern = '#/.*$#U';
$stripped_path = preg_replace($pattern, '', $original_path);

これにより、最後のスラッシュから始まる元のパス文字列からすべてが削除されます。

于 2012-07-23T18:36:23.060 に答える
1

あなたが現在いる場合:

somefolder/foo/haha/lastone/somescript.php

そして、あなたはアクセスしたい:

somefolder/foo/haha/someotherscript.php

次のように入力します。

../someotherscript.php
于 2012-07-23T18:34:03.843 に答える
1

$path 変数を配列に分解する関数を使用してから、array_pop を使用して最後の要素を取り除くことができます。

function path($path) {
    $arrayPath = explode("/", $path);
    $path = array_pop($arrayPath);

    return $path = implode("/", $path);
}
于 2012-07-23T18:39:24.900 に答える
1

PHP の最短のバリアントは次のとおりです。

$path = preg_replace('|/[^/]*$|','', $path);

これは正規表現を使用します。

于 2012-07-23T18:44:03.323 に答える