私は次のようなパスを持っています:
$path='somefolder/foo/bar/lastdir';
最後の部分を削除したいので、次のようにします。
$path='somefolder/foo/bar';
1つ上のフォルダに行ったように。
私は本当にphpの初心者です。おそらくその機能は1つだけですが、どこにも見つかりません。
これを試すことができます(テスト済みで、期待どおりに動作します):
$path = 'somefolder/foo/haha/lastone';
$parts = explode('/', $path);
array_pop($parts);
$newpath = implode('/', $parts);
$newpath
が含まれるようになりsomefolder/foo/haha
ました。
使用する :
dirname(dirname('somefolder/foo/haha/lastone/somescript.php'));
これは返されるはずです:
somefolder/foo/haha/
これはテストされていませんが、試してください:
$path_array = explode('/',$path);
array_pop($path_array);
$path = implode('/',$path_array);
最後の部分が変化する場合は、おそらく正規表現関数を使用するのが適切でしょう。試す
$pattern = '#/.*$#U';
$stripped_path = preg_replace($pattern, '', $original_path);
これにより、最後のスラッシュから始まる元のパス文字列からすべてが削除されます。
あなたが現在いる場合:
somefolder/foo/haha/lastone/somescript.php
そして、あなたはアクセスしたい:
somefolder/foo/haha/someotherscript.php
次のように入力します。
../someotherscript.php
$path 変数を配列に分解する関数を使用してから、array_pop を使用して最後の要素を取り除くことができます。
function path($path) {
$arrayPath = explode("/", $path);
$path = array_pop($arrayPath);
return $path = implode("/", $path);
}
PHP の最短のバリアントは次のとおりです。
$path = preg_replace('|/[^/]*$|','', $path);
これは正規表現を使用します。