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

Roe*_*and 35 php string

所以,让我说我有一个$somestring值为"main/physician/physician_view".

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

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

Mic*_*zek 61

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

substr($somestring, strrpos($somestring, '/') + 1)
Run Code Online (Sandbox Code Playgroud)

  • 并不总是有效.`path_without_slash`返回`ath_without_slash`,如果斜杠在最后,就像`path/to/file /`那样返回`(bool)false` (6认同)

小智 30

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

array_pop(explode('/', $string));
Run Code Online (Sandbox Code Playgroud)

  • 这会抛出一个警告,因为`array_pop()`希望参数通过引用传递,这对于函数返回值(`explode`的返回值)是不可能的.为了避免这个警告,你可以说'&explode`,但直到PHP 5.4.否则,将展开的字符串存储到变量中,并通过引用传递给`array_pop()`. (4认同)
  • `explode` this:`str_repeat('/',1337*1337);` (2认同)

out*_*tis 28

使用basename,是为此目的而创建的.

  • +1,嗯...不错,但也删除了“\”(至少在 Windows 上)。做 OP 想要的,但比问题的标题要多一点。 (2认同)

smo*_*o0f 13

$last_part = substr(strrchr($somestring, "/"), 1);
Run Code Online (Sandbox Code Playgroud)

例子:

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
Run Code Online (Sandbox Code Playgroud)