Захватить оставшийся текст после последней "/" в строке PHP - PullRequest
34 голосов
/ 04 мая 2010

Итак, допустим, у меня есть $somestring, который содержит значение "main / doctor / physician_view".

Я хочу взять только "physician_view". Я хочу, чтобы он также работал, если переданная строка была "main / physician_view" или "site / main / physician / physician_view".

Надеюсь, мой вопрос имеет смысл. Любая помощь будет оценена!

Ответы [ 8 ]

56 голосов
/ 04 мая 2010

Вы можете использовать strrpos(), чтобы найти последнее вхождение одной строки в другую:

substr($somestring, strrpos($somestring, '/') + 1)
29 голосов
/ 04 мая 2010

Есть много способов сделать это.Я бы, наверное, использовал:

array_pop(explode('/', $string));
25 голосов
/ 04 мая 2010

Используйте basename, который был создан именно для этой цели.

13 голосов
/ 14 октября 2015
$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
2 голосов
/ 07 июня 2013

Может быть поздно ...

Самый простой способ, встроенный в 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_Pramaturely

2 голосов
/ 19 декабря 2012

Другие решения не всегда работают или неэффективны. Вот более полезная функция общего назначения, которая всегда работает и может использоваться с другими поисковыми терминами.

/**
 * 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'
0 голосов
/ 02 сентября 2016

Для еще одного лайнера вы можете использовать трюк с разнесением и обратить массив обратно:

current(array_reverse(explode('/',$url)));
0 голосов
/ 26 сентября 2014

Просто вы можете использовать:

$id = substr( $url, strrpos( $url, '/' )+1 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...