如何获取PHP字符串的最后7个字符?

400

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

例如:

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

哪一个会显示:

The new string is: 5409els
8个回答

803

使用substr()函数并将第二个参数设为负数。

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

来自php文档:

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

如果起始位置是负数,则返回的字符串将从字符串末尾倒数第start个字符开始。


1
但是如果$dynamicstring少于7个字符,$newstring将为空。(至少在PHP 5.2.6上) - Scott Chu
2
你可以先用strlen检查一下字符数是否大于或等于7。 - PBwebD
2
自 PHP 8 开始,您可以使用 str_ends_with(string $haystack, string $needle): bool - Flo Bayer

90

嗯...就像那样?

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

25

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

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

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

如果长度少于7,则返回消息或错误信息。

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

substr文档


我认为else部分是必要的,以便返回一条消息。例如:输入了无效数据或... - Neri
2
这可能是最好的答案,唯一可以使它更好的是引用 PHP 手册。 - Mark Carpenter Jr
1
在第二个代码片段中,如果strlen恰好为7,则会返回错误。修复:将>7替换为>=7 - ToolmakerSteve

23

使用多字节字符编码时,使用mb_substr而不是substr可以获得更安全的结果。下面是utf-8的示例:

更安全的多字节字符编码处理,请使用 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') ;

6

为了方便起见,如果您不想发送消息,请尝试这个方法

$new_string = substr( $dynamicstring, -min( strlen( $dynamicstring ), 7 ) );

6
对于最后的7个字符
$newstring = substr($dynamicstring, -7);

$newstring : 5409els

对前7个字符进行操作

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

$newstring : 2490slk


1
这里有多个正确答案。但是如果您想要一个“安全”的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。将strlen替换为mb_strlen


-3

字符串的后7个字符:

$rest = substr( "abcdefghijklmnop", -7); // returns "jklmnop"

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