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

如何在PHP中从RFID卡号字符串提取指定位置的6位数字并展示

PHP实现RFID字符串提取与校验方案

1. 提取指定位置的6位校验码

PHP内置的substr函数可以直接完成子串截取,注意该函数的索引从0开始计数,你需要的第14-19位(1基准)对应起始偏移为13,截取长度为6:

// 从RFID读取到的原始字符串
$rfid_raw = 'ccffff10320d011899540002692a000002692ab7';

// 截取逻辑:起始偏移13,取6位
$check_code = substr($rfid_raw, 13, 6);

// 测试输出,示例场景下会得到189954
echo $check_code;

注意:如果实际提取结果和预期不符,微调substr的第一个偏移参数即可,不同计数基准(1起始/0起始)会产生1位的偏差。

2. 格式合法性校验

建议加两层前置校验,避免后续逻辑出错:

// 校验原始RFID长度是否符合要求
if (strlen($rfid_raw) < 19) {
    die("RFID字符串格式非法");
}

// 校验提取的6位是否为纯数字(根据你的业务需求可选)
if (!preg_match('/^\d{6}$/', $check_code)) {
    die("提取的校验码格式非法");
}

3. 数据库匹配逻辑

推荐用PDO参数绑定的方式查询,避免SQL注入风险:

// 初始化数据库连接,替换为你自己的配置
$pdo = new PDO('mysql:host=127.0.0.1;dbname=你的库名;charset=utf8mb4', '数据库用户名', '数据库密码');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// 参数绑定查询,避免注入
$stmt = $pdo->prepare("SELECT count(*) FROM 你的用户表 WHERE 校验码字段 = ? LIMIT 1");
$stmt->execute([$check_code]);
$is_match = $stmt->fetchColumn() > 0;

if ($is_match) {
    // 匹配成功,执行对应服务逻辑
    echo "校验通过,已为你开通对应服务";
} else {
    // 匹配失败,返回错误提示
    echo "校验失败,无访问权限";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:36:03