2012-01-16 20 views
1

マテリアライズドパスからアイテムの最後のオカレンスを取得しようとしています。以下、私はX、Y & Zは任意の文字列であることができる例として提供されてきた可能な値のサブセットである:マテリアライズドパス最後のアイテムを選択するPHP正規表現

X/ 
X/Y/ 
X/Y/Z/ 

Iは、PHPの正規表現を使用して、パス上の最後の項目を選択することができる方法は、希望出力末尾/をオフにトリミングした後、最後/を見つけるためstrrpos()を使用し、

X 
Y 
Z 

答えて

3
$parts = explode('/', trim($url, '/')); 
$lastpart = end($parts); 

正規表現の必要はありません。しかし、あなたが主張する場合:

#^/?([^/]+)/?$# 

パスの一部は、グループ内のある1

1

ではなく正規表現:上記の対応する行は、次の

$string = "/x/y/"; 

$string = rtrim($string, "/"); 
echo substr($string, strrpos($string, "/") + 1); 
// y 

$string = "/x/y/z/"; 
// prints 
// z 

$string = "/x"; 
// prints 
// x 
0

私がpreg_splitのために行くとarray_popたい:

$test = "a/a/v/"; 
$test = rtrim($test,'/'); 
$arr = preg_split('/\//',$test); 
$lastelement = array_pop($arr); 
var_dump($lastelement);