354

我将如何获取下面字符串的最后 7 个字符?

例如:

$dynamicstring = "2490slkj409slk5409els";
$newstring = some_function($dynamicstring);
echo "The new string is: " . $newstring;

这将显示:

The new string is: 5409els
4

8 回答 8

730

使用substr()负数作为第二个参数。

$newstring = substr($dynamicstring, -7);

php 文档

string substr ( string $string , int $start [, int $length ] )

如果 start 为负数,则返回的字符串将从字符串末尾的第 start 个字符开始。

于 2012-05-10T21:21:21.737 回答
80

嗯..这样吗?

$newstring = substr($dynamicstring, -7);
于 2012-05-10T21:20:56.460 回答
22

使用多字节字符代码的更安全的结果,总是使用 mb_substr 而不是 substr。UTF-8 示例:

$str = 'Ne zaman seni düşünsem';
echo substr( $str, -7 ) . ' <strong>is not equal to</strong> ' .
  mb_substr( $str, -7, null, 'UTF-8') ;
于 2016-10-22T23:14:01.780 回答
17

最好在获取字符串之前进行检查。

$newstring = substr($dynamicstring, -7);

如果字符大于 7,则返回最后 7 个字符,否则返回提供的字符串。

或者如果长度小于 7 时需要返回消息或错误,请执行此操作

$newstring = (strlen($dynamicstring)>=7)?substr($dynamicstring, -7):"message";

子文档

于 2016-05-13T18:45:19.323 回答
5

为简单起见,如果您不想发送消息,请尝试此

$new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );
于 2019-04-18T19:45:40.090 回答
3

最后 7 个字符

$newstring = substr($dynamicstring, -7);

$newstring : 5409els

前 7 个字符

$newstring = substr($dynamicstring, 0, 7);

$新字符串:2490slk

于 2019-08-09T13:23:43.790 回答
0

这里有多个正确答案。但是,如果您想要一个“安全”版本的 , 需要什么并不明显substr

substr,当字符串“足够长”时,但如果字符串太短,则返回原始字符串(而不是返回false)。

/** Unlike substr, handles case where $string is too short.
 * @param $string
 * @param $nChars - negative to return at end of string.
 */
function safe_substr($string, $nChars) {
    if ($nChars == 0 || !isset($string))
        return "";

    if (strlen($string) <= abs($nChars))
        // $string is too short (or exactly the desired length). Return the string.
        return $string;

    return substr($string, $nChars);
}

注意:对于 UTF-8 字符,请定义safe_mb_substr,将substr上面替换为mb_substr. 并替换strlenmb_strlen.

于 2021-07-14T17:26:12.727 回答
-1

字符串的最后 7 个字符:

$rest = substr( "abcdefghijklmnop", -7); // returns "jklmnop"
于 2020-04-13T11:07:31.087 回答