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

PHP变量动态字符串处理:移除含可变数字的指定内容

在PHP中移除包含动态数字的特定字符串片段

嘿,这个需求我熟!你要处理的是移除字符串末尾那种带动态数字的固定格式片段对吧?刚好可以用PHP的正则表达式来搞定,而且能完美适配你给出的各种情况——不管有没有目标片段,都能输出符合预期的结果。

核心思路

我们需要匹配的目标片段格式是: [数字](+) t/m [数字] person,其中两个数字是动态变化的,而且这个片段只会出现在字符串末尾。所以用preg_replace()函数,配合精准的正则表达式就能一次性替换掉所有符合条件的内容。

实现代码

直接上可运行的代码示例,你可以直接套用:

// 你的示例输入数组
$inputStrings = [
    "This is example one 10(+) t/m 16 person",
    "This is also an example 12(+) t/m 44 person",
    "And this is the final example"
];

// 遍历处理每个字符串
foreach ($inputStrings as $str) {
    // 正则匹配并移除目标片段
    $cleanedStr = preg_replace('/\s+\d+\(\+\)\s+t\/m\s+\d+\s+person$/', '', $str);
    // 输出结果
    echo $cleanedStr . PHP_EOL;
}

正则表达式详解

给你拆解一下这个正则的各个部分,方便你后续根据需求调整:

  • \s+:匹配一个或多个空格(确保能匹配片段前的任意数量空格)
  • \d+:匹配一个或多个数字(对应动态变化的数字部分)
  • \(\+\):匹配固定的(+),因为括号是正则的特殊字符,所以用反斜杠转义
  • \s+t\/m\s+:匹配t/m,前后的\s+兼容任意数量的空格,/不需要转义但也可以转义,不影响效果
  • 第二个\d+:匹配第二个动态数字
  • \s+person:匹配 person,同样兼容任意数量的前置空格
  • $:锚定字符串末尾,确保我们只替换字符串结尾的目标片段,不会误匹配中间的类似内容

测试结果

运行上面的代码后,输出完全符合你的期望:

This is example one
This is also an example
And this is the final example

如果后续遇到格式变种(比如person变成people,或者(+)变成其他符号),只需要微调正则里的固定字符部分就可以啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:18:01