如何基于用户输入的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位是否有对应的映射规则。
- 生成逻辑:
- 从映射数组中获取B码的第1位字符;
- 直接取A码的第16位作为B码的第2位;
- 将前两位重复拼接成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
相关产品推荐
相关产品推荐

