

以下のような文字列で  
/category/tops/knit-sweater/  
最後の/ から その前の/までの文字（この場合だと knit-sweater）を取得したいのですが、  
どのように正規表現を書けば実現できますでしょうか。

詳しい方、ご教示ください。  
宜しくお願い致します。


CC BY-SA 3.0
2016-11-02T06:48:36.467
30046
2016-11-03T13:42:07.963
8619
question
php
正規表現の書き方


個人的には正規表現を使うほどでもないかなと思います。  
下記では駄目でしょうか？

[code]

    $str = '/category/tops/knit-sweater/';
    $expArray = explode('/', $str);
    
    $index = count($expArray) - 2; // 最後の一個前のインデックス
    $hosiiStr = $expArray[$index];
    
[/code]


CC BY-SA 3.0
2016-11-02T06:54:45.363
30048
2016-11-02T06:54:45.363
19001
30046
answer


サンプルが少ないので、意図を読み間違えているかもしれませんが、とりあえずこれで目的は果たせるように思います。

[code]

    $str = '/category/tops/knit-sweater/';
    $pattern = '#/([^/]*)/$#';
    $matches = [];
    if( preg_match($pattern, $str, $matches) ) {
      print($matches[1]); //->knit-sweater
    }
    
[/code]

最後の`/`の後ろにまだ何か文字が入る可能性があるなど、細かい部分で微調整が必要になる可能性はありますが、最後の何かを取り出したいのであれば、多くの場合に`$`が使えると思います。


CC BY-SA 3.0
2016-11-02T15:39:08.943
30068
2016-11-02T15:39:08.943
13972
30046
answer


pathから最後の名前を取り出す為に`basename`という関数が用意されています。

[code]

    $ php -r 'echo basename("/category/tops/knit-sweater/");'
    
[/code]


CC BY-SA 3.0
2016-11-03T13:42:07.963
30082
2016-11-03T13:42:07.963
62
30046
answer