PHP如何在substr提取的11位数值的前9位与后2位之间插入小数点
解决方法
你需要对提取到的11位固定长度数字串做插入小数点处理,直接修改原赋值逻辑即可,有两种常用实现方案:
- 方案1:字符串分段拼接,可读性更高
将原代码行$matchesLine[$key] = substr($line,166,11);替换为以下代码即可:
$rawVal = substr($line, 166, 11); $matchesLine[$key] = substr($rawVal, 0, 9) . '.' . substr($rawVal, 9);
- 方案2:使用
substr_replace直接插入字符,代码更简洁
$matchesLine[$key] = substr_replace(substr($line, 166, 11), '.', 9, 0);
以上两种方案默认会保留所有前置0,比如输入00023659819,输出为000236598.19。如果你示例给出的期望输出需要去掉前导0,可以额外做一次前导0过滤:
$rawVal = substr($line, 166, 11); $firstPart = ltrim(substr($rawVal, 0, 9), '0'); // 避免全0场景下前半部分为空,可加兜底逻辑 $firstPart = $firstPart === '' ? '0' : $firstPart; $matchesLine[$key] = $firstPart . '.' . substr($rawVal, 9);
处理00023659819即可得到236598.19,和你示例的输出格式匹配。
内容的提问来源于stack exchange,提问作者Jack Yuan
相关产品推荐
相关产品推荐

