在php字符串中的最后一个“/”之后抓取剩余的文本

时间:2010-05-04 04:16:40

标签: php string

所以,假设我有$somestring,其值为“main / physician / physician_view”。

我想抓住“physician_view”。如果传递的字符串是“main / physician_view”或“site / main / physician / physician_view”,我希望它也能工作。

希望我的问题有道理。任何帮助将不胜感激!

8 个答案:

答案 0 :(得分:55)

您可以使用strrpos()查找另一个字符串的最后一次出现:

substr($somestring, strrpos($somestring, '/') + 1)

答案 1 :(得分:28)

有很多方法可以做到这一点。我可能会用:

array_pop(explode('/', $string));

答案 2 :(得分:25)

使用为此目的而创建的basename

答案 3 :(得分:12)

$last_part = substr(strrchr($somestring, "/"), 1);

示例:

php > $a = "main/physician/physician_view";
php > $b = "main/physician_view";
php > $c = "site/main/physician/physician_view";
php > echo substr(strrchr($a, "/"), 1);
    physician_view
php > echo substr(strrchr($b, "/"), 1);
    physician_view
php > echo substr(strrchr($c, "/"), 1);
    physician_view

答案 4 :(得分:2)

其他解决方案并不总是有效,或效率低下。这是一个更有用的通用实用函数,它始终有效,可以与其他搜索项一起使用。

/**
 * Get a substring starting from the last occurrence of a character/string
 *
 * @param  string $str The subject string
 * @param  string $last Search the subject for this string, and start the substring after the last occurrence of it.
 * @return string A substring from the last occurrence of $startAfter, to the end of the subject string.  If $startAfter is not present in the subject, the subject is returned whole.
 */
function substrAfter($str, $last) {
    $startPos = strrpos($str, $last);
    if ($startPos !== false) {
        $startPos++;
        return ($startPos < strlen($str)) ? substr($str, $startPos) : '';
    }
    return $str;
}


// Examples

substrAfter('main/physician/physician_view', '/');  // 'physician_view'

substrAfter('main/physician/physician_view/', '/'); // '' (empty string)

substrAfter('main_physician_physician_view', '/');  // 'main_physician_physician_view'

答案 5 :(得分:2)

可能会迟到......

PHP中最简单的方法是在上一个/之后抓取最后一个字符串,只需使用pathinfo函数即可。

事实上,你可以自己检查一下,

$urlString = 'path/to/my/xximage.png';

$info = pathinfo($urlString);

你可以这样做:

var_dump($info);

这会给你类似的东西:

'dirname' => string 'path/to/my/' 
'basename' => string 'xximage.png'
'extension' => string 'png' (length=3)
'filename' => string 'xximage' 

因此,您可以从该链接中提取图像:

 $img=$info['basename'];
 $extension=$info['extension'];
 ///etc...

echo $img.".".$extension; //xximage.png

小东西,但可以让你Grow_Gray_Hair_Prematurely

答案 6 :(得分:0)

只需使用:

$id = substr( $url, strrpos( $url, '/' )+1 );

答案 7 :(得分:0)

对于另一个衬垫,你可以使用爆炸技巧并反转阵列:

UINavigationViewController