Ответ 1
Есть много способов сделать это. Я бы, вероятно, использовал:
array_pop(explode('/', $string));
Итак, скажем, у меня есть $somestring
, который содержит значение "main/doctor/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)));