2011-01-19 6 views
31

文字列に格納されたパスから最後のフォルダ名を取得しようとしています。文字列内のパスから最後のディレクトリを取得する方法

例えば:Home/new_folder/test

result = test 
+0

ありがとうございます;)誰もが正しいです – Rickstar

+2

あなたはansを受け入れる必要がありますワー。たぶんあなたの問題を解決した最初のものか、または正解を提供しながら重要な/有用な情報を追加したものでしょう。 – acm

+0

完了しました。もう一度おねがいします。 – Rickstar

答えて

82

使用basename

basename('Home/new_folder/test'); 
// output: test 

$result = end((explode('/', $path))); 
+0

ベストアンサーは、LinuxとWindowsの両方に対応しています。ありがとう! – RafaSashi

+0

この回答の問題は、クリーンURL(スクリプト拡張子なし)を使用している場合です。最後の項目は最後のフォルダではありません。私の解決した解決策を確認してください... – Ash501

+0

http://stackoverflow.com/a/40456931/622864 この回答の問題は、労働集約的な特定のパスを引数として必要とすることです。 (私は怠惰です、これは私のために働くつもりはありません) 灰、1つの問題を解決しました。 (しかし、それは厄介で、ベースネームではなく、正しいツールですので、Ash501を近づけてください) ライナー、ダイナミック、ポータブル、通常は正しい、そしてすでにあなたのためにパッケージ化されています。どういたしまして。 – BradChesney79

1
$directory = 'Home/new_folder/test'; 
$path = explode('/',$directory); 
$lastDir = array_pop($path); 
2

は、配列に文字列を回す、あなたは、あなたの結果であるように、その配列の最後の値を選択することができます爆発します。

へ:爆発答えた方には注意点として

$last = basename("Home/new_folder/test"); 
13

あなたはbasename()機能を使用することができますあなたが使用すべきパスの末尾の名前のコンポーネントを取得ベース名! パスが$str = "this/is/something/"の場合、end(explode($str));のコンボは失敗します。また、これは最後のスラッシュが空白の文字列が返されるという意味ではありませんことを確認しますpathinfo

$pathinfo = pathinfo('dir/path', PATHINFO_DIRNAME); 
$pathinfo = array_filter(explode('/', $pathinfo)); 

$result = array_pop($pathinfo); 

-

+1

+1文字列操作を使用しないで、ジョブに適切なツールを使用してください。 –

0
<?php 
$path = explode('/', $yourPathVar); 
// array_pop gives you the last element of an array() 
$last = array_pop($path); 
?> 
7

あなたはパス情報を使用することができます。

3

これは古い質問ですが、リスト上の最後の項目(スクリプトでもよい)を混乱させることなく、自動的に最後のフォルダを取得します。実際の最後のフォルダではありません。

$url = pathinfo($_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME); 
$url_var = explode('/' , $url); 
$last_folder = end($url_var); 
0

これはWindows環境でも機能し、指定されたパスがスラッシュで終わる場合にも機能します。

function path_lastdir($p) { 
    $p=str_replace('\\','/',trim($p)); 
    if (substr($p,-1)=='/') $p=substr($p,0,-1); 
    $a=explode('/', $p); 
    return array_pop($a); 
} 
2

だから、ほとんどの場合、おそらく再利用可能な機能など何かを動的にしたいと思っています。 $ _SERVER( 'REQUEST_URI')URIは、パスを取得するから、ということ

::でもparse_url($ _、SERVER [ 'REQUEST_URI'

ウェブサーバは$ _SERVERデータを介して要求であなたを与えたデータからURIを取得します。 ]、PHP_URL_PATH))

のbasename()は、あなたが完全なURIからのパスを蒸留したら最後のディレクトリを取得するための適切なツールです:ベース名(でもparse_url($ _、SERVER [ 'REQUEST_URI']、PHP_URL_PATH))

function lastPathDir() { 
    // get a URI, parse the path from it, get the last directory, & spit it out 
    return basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)); 
} 
+0

それを書いたとき、私はすでにポップアップする可能性のある問題を見た。フロントエンドのムンボジャンボは、ちょっとクレイジーになり、おそらくあなたが期待していなかったかもしれないURLをフィードするかもしれません。 – BradChesney79

関連する問題