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

PHP中提取字符串最后一个横杠后的数字并加1的方法

解决PHP提取字符串最后一个横杠后数字并加1的问题

嗨,我来帮你搞定这个需求!你需要的是精准提取最后一个横杠("-")后面的数字,然后加1,之前的两种方法都没命中这个核心点,下面给你两个可靠的解决方案:

方法一:用字符串函数定位最后一个横杠

这种方法通过strrpos找到最后一个横杠的位置,再截取后续内容,不管数字是几位都能适配:

$ID = "YUH-2017-18-510601";
// 找到字符串中最后一个"-"的位置
$lastDashPosition = strrpos($ID, '-');

// 确保找到横杠后再处理(避免字符串无横杠的情况)
if ($lastDashPosition !== false) {
    // 截取最后一个"-"之后的子串
    $targetNumber = substr($ID, $lastDashPosition + 1);
    // 转为整数并加1
    $newNumber = (int)$targetNumber + 1;
    echo $newNumber; // 输出:510602
}

方法二:用正则精准匹配末尾数字

正则表达式可以直接定位到最后一个横杠后的数字段,代码更简洁:

$ID = "YUH-2017-18-510601";
// 正则匹配规则:匹配末尾的"-" + 一串数字,捕获数字部分
preg_match('/-(\d+)$/', $ID, $matches);

// 检查是否匹配到目标数字
if (isset($matches[1])) {
    $targetNumber = $matches[1];
    $newNumber = (int)$targetNumber + 1;
    echo $newNumber; // 输出:510602
}

为什么你之前的方法失效?

  • 第一种固定长度截取substr($ID, -6):只能适配6位数字,一旦数字位数变化(4、5、7位)就会截取错误内容;
  • 第二种preg_match_all('!\d+!'):会把字符串里所有数字片段(比如2017、18、510601)全部提取合并,得到的是所有数字拼接后的结果,完全不符合“只取最后一段数字”的需求。

两种方法都能完美适配任意长度的末尾数字,你可以根据自己的习惯选择~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:47:31