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

Data Matrix条码解析PHP代码修复:无法识别空格后内容

解决Data Matrix条码含空格的解析问题

问题分析

你的Data Matrix条码包含空格分隔的两部分内容,原有代码会因空格截断数据,导致无法解析21开头的序列号字段。条码各字段结构如下:

  • 01:GTIN标识,后接14位数字
  • 17:过期日期标识,后接6位数字(格式YYMMDD)
  • 10:批次号标识,后接可变长度字符(最多20位)
  • 21:序列号标识,后接可变长度字符(最多20位)

修改后的PHP代码

<?php
$barcodeData = "0109556135082301172207211060221967 21Sk4YGvF811210721";

// 移除所有空格,确保完整处理整个条码数据
$cleanData = str_replace(' ', '', $barcodeData);

$parsed = [];
$length = strlen($cleanData);
$i = 0;

while ($i < $length) {
    // 获取当前2位标识
    $identifier = substr($cleanData, $i, 2);
    $i += 2;
    
    switch ($identifier) {
        case '01': // GTIN固定14位
            $parsed['gtin'] = substr($cleanData, $i, 14);
            $i += 14;
            break;
        case '17': // 过期日期固定6位,转成标准日期格式
            $expDate = substr($cleanData, $i, 6);
            $parsed['expiration_date'] = "20" . substr($expDate, 0, 2) . "-" . substr($expDate, 2, 2) . "-" . substr($expDate, 4, 2);
            $i += 6;
            break;
        case '10': // 批次号为可变长度,直到下一个标识出现
            $batchEnd = strpos($cleanData, '21', $i);
            $batchEnd = $batchEnd === false ? $length : $batchEnd;
            $parsed['batch_number'] = substr($cleanData, $i, $batchEnd - $i);
            $i = $batchEnd;
            break;
        case '21': // 序列号到字符串结束
            $parsed['serial_number'] = substr($cleanData, $i);
            $i = $length;
            break;
        default:
            $i = $length;
            break;
    }
}

// 输出解析结果
print_r($parsed);
?>

关键修改说明

  1. 清除空格:用str_replace移除条码中的空格,避免代码因空格截断数据,确保完整处理所有内容。
  2. 动态处理可变字段:针对批次号、序列号这类无固定长度的字段,通过查找下一个标识的位置确定字段长度,避免解析错误。
  3. 日期格式化:将过期日期从YYMMDD转成YYYY-MM-DD的标准格式,方便后续使用。

预期输出

运行代码后会得到如下解析结果:

Array
(
    [gtin] => 09556135082301
    [expiration_date] => 2022-07-21
    [batch_number] => 60221967
    [serial_number] => Sk4YGvF811210721
)

注:你的条码数据中没有生产日期对应的标识(通常为11或13开头),因此解析结果不包含该字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:45:47