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
相关产品推荐
相关产品推荐

