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

如何基于用户输入的16位码生成专属4位码?求PHP实现

PHP实现16位码生成4位专属码

以下是符合需求的PHP代码,包含输入验证和完整的生成逻辑:

<?php
// 定义第15位字符到B第1位的映射关系,根据需求补充完整所有0-9、A-F的对应规则
$charMap = [
    '0' => '2',
    '1' => '3',
    '3' => '1',
    '4' => '6',
    '9' => 'B',
    'D' => 'F',
    // 补充剩余字符的映射关系,例如:
    // '2' => '?',
    // '5' => '?',
    // ...
];

// 处理用户输入(这里假设通过POST接收,也可根据实际场景调整)
$inputA = $_POST['a_code'] ?? '';
$inputA = strtoupper(trim($inputA));

// 输入验证
$error = '';
if (strlen($inputA) !== 16) {
    $error = '输入必须是16位字符';
} elseif (!preg_match('/^[0-9A-F]+$/', $inputA)) {
    $error = '输入只能包含0-9、A-F字符';
} elseif (!isset($charMap[$inputA[14]])) {
    $error = '输入的第15位字符未定义映射规则';
}

// 生成B码
$codeB = '';
if (empty($error)) {
    $bFirst = $charMap[$inputA[14]];
    $bSecond = $inputA[15];
    $codeB = $bFirst . $bSecond . $bFirst . $bSecond;
}

// 输出结果
?>
<!DOCTYPE html>
<html>
<head>
    <title>生成4位专属码</title>
</head>
<body>
    <h3>输入16位码生成4位专属码</h3>
    <form method="post">
        <input type="text" name="a_code" placeholder="请输入16位0-9/A-F字符" value="<?= htmlspecialchars($inputA) ?>">
        <button type="submit">生成</button>
    </form>
    <?php if ($error): ?>
        <p style="color: red;"><?= $error ?></p>
    <?php elseif ($codeB): ?>
        <p>生成的4位码(B):<strong><?= $codeB ?></strong></p>
    <?php endif; ?>
</body>
</html>

代码说明

  • 映射数组:$charMap 存储A码第15位到B码第1位的对应关系,你需要根据需求补充完整所有允许字符的映射规则。
  • 输入处理:将输入转为大写并去除空格,确保统一格式。
  • 验证逻辑:检查输入长度是否为16位、是否包含非法字符、第15位是否有对应的映射规则。
  • 生成逻辑:
    1. 从映射数组中获取B码的第1位字符;
    2. 直接取A码的第16位作为B码的第2位;
    3. 将前两位重复拼接成4位最终码。

示例验证

  • 输入 0B3D72606A620646,第15位是4,映射到6,第16位是6,生成结果为6666,符合示例;
  • 输入 A18BDCCEC4CCA933,第15位是3,映射到1,第16位是3,生成结果为1313,符合示例;
  • 输入 11F5796B61690196,第15位是9,映射到B,第16位是6,生成结果为B6B6,符合示例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:10:23