在PHP中分割字符串并获取最后一部分

60

我需要在 PHP 中按照“ - ”拆分字符串并获取最后一部分。

因此从这个字符串:

abc-123-xyz-789

我期望得到:

"789"

这是我想出来的代码:

substr(strrchr($urlId, '-'), 1)

这个功能很好,但是:

如果我的输入字符串中不包含任何“-”,我必须获取整个字符串,例如从:

123

我需要得到:

123

而且需要尽可能快。


4
explode()函数用于将一个字符串通过指定的分隔符进行分割成数组,返回包含分割后的子串的数组。end()函数用于获取数组中的最后一个元素。 - Wrikken
1
end(split('-',$str)) - Wesley Schleumer de Góes
https://dev59.com/ZmAf5IYBdhLWcg3wnDsI - mickmackusa
16个回答

0

对我来说,最艰难的方式:

  $last = explode('-',$urlId)[count(explode('-',$urlId))-1];

0

被接受的答案中存在一个错误,即如果未找到分隔符,则仍会吃掉输入字符串的第一个字符。

$str = '1-2-3-4-5';
echo substr($str, strrpos($str, '-') + 1);

产生预期的结果:5

$str = '1-2-3-4-5';
echo substr($str, strrpos($str, ';') + 1);

生成 -2-3-4-5

$str = '1-2-3-4-5';
if (($pos = strrpos($str, ';')) !== false)
    echo substr($str, $pos + 1);
else
    echo $str;

按照要求生成整个字符串。

3v4l 链接


-1
你可以使用 array_pop 结合 explode 代码:
$string = 'abc-123-xyz-789';
$output = array_pop(explode("-",$string));
echo $output;

演示: 点击这里


3
它会导致E_STRICT错误:严格标准:只能传递变量的引用。 - Alexey Kosov

-1
你可以这样做:
$str = "abc-123-xyz-789";
$arr = explode('-', $str);
$last = array_pop( $arr );
echo $last; //echoes 789

这实际上是一个重复的答案,但也适用于5年前的帖子。 - NoobishPro

-1
你可以这样做:
$str = "abc-123-xyz-789";
$last = array_pop( explode('-', $str) );
echo $last; //echoes 789

2
它会引起 E_STRICT: 严格标准:只应传递变量引用。 - Alexey Kosov
我不知道为什么有人认为这个答案没有用。对我来说它很有效,谢谢。 - Affa Musaffa

-1

只需调用以下一行代码:

 $expectedString = end(explode('-', $orignalString));

2
这会导致一个错误,详见此 Stack Overflow 帖子 - mibbler
哦,使用 '-' 作为分隔符,而我使用了 '/'。无论如何,我已经纠正了我的代码。请现在检查它。 - Md. Zahangir Alam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接