Захватите оставшийся текст после последнего «/» в строке php

Итак, скажем, у меня есть $somestring имеет значение «main / $somestring / physician_view».

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

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

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

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

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

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

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

 $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 

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

 /** * 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' 

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

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

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

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

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

 current(array_reverse(explode('/',$url)));