0

我有这个字符串 abc_123_test,我试图从字符串中获取“测试”。我目前有这个代码。

$string = 'abc_123_test';

$extracted_string = substr( $string, 0, strrpos( $string, '_' ) );

但是,这将获取字符串的第一部分,直到“abc_123”。所以这似乎与我想要的相反。我想通过使用 strrpos,它会得到相反的结果,但显然我错过了一些东西。

有什么帮助吗?

4

9 回答 9

5

strrpos 确实颠倒了它寻找最后一个的感觉,但是你仍然在从字符串的开头到那个点做子字符串。

您可以使用:

substr ($string, strrpos( $string, '_' ) + 1 );

获取字符串的最后一位而不是起始位。它从最后一个位置开始_,因为你省略了长度,它给了你字符串的其余部分。

毫无疑问,有更好的方法来实现这一点,但是,如果你将自己限制在substrand strrpos,这将正常工作。

于 2013-02-01T05:53:34.063 回答
2

尝试:

array_pop(split('_', $string));

键盘示例http ://codepad.org/JkOaS0oc

于 2013-02-01T05:51:29.633 回答
2

您可能想改用explode。

echo end(explode('_', $string));
于 2013-02-01T05:53:14.467 回答
2

尝试这个:

 array_pop(explode('_', $string));
于 2013-02-01T05:54:40.677 回答
1

尝试

substr( $string, strrpos( $string, '_' )+1)
于 2013-02-01T05:54:15.460 回答
1

尝试:

$extracted_string = substr($string,strrpos($string, '_')+1);

于 2013-02-01T05:54:34.877 回答
1

使用explode()试试这个简单的方法

$string = 'abc_123_test';
$string = explode('_',$string);
print_r($string);
echo $string[2]; //output test
于 2013-02-01T06:11:30.150 回答
1

我认为您需要使用以下代码:

 $extracted_string = substr( $string, strrpos( $string, '_' )+1);

substr($string, 0, strrpos($string, '_')); - 这从第 0 个位置开始。

于 2013-02-01T05:55:29.177 回答
0

您可以尝试使用此代码从以下字符串中获取“测试”

$string = 'abc_123_test';

echo substr($string,8,11);

好运

于 2013-02-01T05:58:01.503 回答