php删除字符串最后一个字符

方法一、substr

一般情况下,我用的是substr,关于substr的更多解释可以看官方手册

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

第一个参数是父字符串,第二个参数是子字符串开始的下标,第三个参数是子字符串的长度

$str = "Hello Nemo!";
$str2 = substr(str, 0, strlen($str) - 1);

上面这个方法是设置截取从0号下标开始的长度为strlen($str) - 1的子字符串。

如果只是想要去除字符串里面的最后一个字符,可以使用下面这个更简洁的办法,不过一定要确认字符串里面有内容。

$str = "Hello Nemo!";
$str2 = substr(str, 0, -1);

关于判断字符串长度strlen这个函数,我在我的另外一篇笔记里面有讲到判断英文字符串长度和判断中文字符串长度。

方法二、rtrim

rtrim可以删除字符串末尾的某些字符

$str = "Hello Nemo!";
$str2 = rtrim($str, "!");
var_dump($str2);
$str3 = rtrim($str, "Nemo!");
var_dump($str3);

打印出的结果是:

string(10) "Hello Nemo"
string(6) "Hello "

如果rtrim不加第二个参数,则默认删除字符串末端的以下这些字符:

  • " " (ASCII 32 (0x20)),普通空白符。
  • "\t" (ASCII 9 (0x09)),制表符。
  • "\n" (ASCII 10 (0x0A)),换行符。
  • "\r" (ASCII 13 (0x0D)),回车符。
  • "\0" (ASCII 0 (0x00)),NUL 空字节符。
  • "\x0B" (ASCII 11 (0x0B)),垂直制表符。

看以下示例代码

$str = "Hello Nemo!\n \n \r";
$str2 = rtrim($str);
var_dump($str2);

$str = "Hello Nemo!Nemo!Nemo!";
$str2 = rtrim($str, "Nemo!");
var_dump($str2);

打印出的结果是:

string(10) "Hello Nemo!"
string(10) "Hello "

可以看出,rtrim默认会删除字符串末端的空白字符(或者指定字符串),直到不是空白字符(或者指定字符串)