You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中如何用trim()或rtrim()移除末尾空格及后续字符?

如何用PHP移除字符串末尾空格及其后的所有字符?

嘿,这个需求我之前做项目时也碰到过,刚好可以给你几个实用的解决方案,完美适配你举的例子:

方法一:利用strrpos() + substr()

核心思路是找到字符串最后一个空格的位置,然后截取从开头到这个位置的内容,就能精准去掉空格后面的所有字符:

// 处理第一个示例
$address1 = "Any Address 23B";
$lastSpacePos = strrpos($address1, ' ');
// 加判断是为了兼容没有空格的极端情况
$cleanedAddr1 = $lastSpacePos !== false ? substr($address1, 0, $lastSpacePos) : $address1;
echo $cleanedAddr1; // 输出: Any Address

// 处理第二个示例
$address2 = "Another Address 6";
$lastSpacePos = strrpos($address2, ' ');
$cleanedAddr2 = $lastSpacePos !== false ? substr($address2, 0, $lastSpacePos) : $address2;
echo $cleanedAddr2; // 输出: Another Address

方法二:用正则表达式preg_replace()

如果想要更简洁的写法,一行正则就能搞定,还能处理末尾有多个空格的情况:

// 处理第一个示例
$address1 = "Any Address 23B";
$cleanedAddr1 = preg_replace('/\s+.*/$/', '', $address1);
echo $cleanedAddr1; // 输出: Any Address

// 处理第二个示例
$address2 = "Another Address 6";
$cleanedAddr2 = preg_replace('/\s+.*/$/', '', $address2);
echo $cleanedAddr2; // 输出: Another Address

正则/\s+.*/$/的含义:

  • \s+:匹配一个或多个连续空格(覆盖末尾多空格的场景)
  • .*:匹配空格之后的任意字符
  • $:锚定到字符串末尾,确保只替换末尾的目标内容,不会影响中间的空格

关于你提到的trim()和rtrim()

这里要说明下:trim()只能移除字符串首尾的空白字符,rtrim()只能移除字符串末尾的空白字符——它们都没办法移除空格后面的其他字符。所以要实现你的需求,必须结合上面的截断或正则替换方法才行。

内容的提问来源于stack exchange,提问作者medk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 20:48:09