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

PHP数组中特殊字符键存在却无法查询匹配的原因及解决方法

问题原因
  • 核心原因是你使用了str_split()函数分割输入字符串:str_split()默认按单字节切割字符,而♧、☆这类特殊符号都是多字节UTF-8字符(通常占2-3字节),会被拆成多个独立的乱码单字节片段,自然无法匹配数组里的完整字符键。
  • 次要潜在问题:如果你的PHP源码文件没有保存为UTF-8无BOM格式,或者前端传入的inputText参数编码不是UTF-8,也会导致字符编码不匹配,无法命中数组键。
修复方案
  1. 把str_split替换为多字节安全的分割方式,优先使用PHP 7.4+内置的mb_str_split()函数,同时显式指定编码为UTF-8
  2. 增加键存在判断,避免未定义的字符触发PHP警告
  3. 确认PHP源码文件保存为UTF-8无BOM格式,前端传入参数的编码也统一为UTF-8

修改后的完整代码如下:

<?php 
    $default = [
        "0" => "000a ",
        "1" => "000b ",
        "2" => "000c ",
        "3" => "000d ",
        "4" => "000e ",
        "5" => "000f ",
        "6" => "000g ",
        "7" => "000h ",
        "8" => "000i ",
        "9" => "000j ",
        "a" => "001a ",
        "A" => "002a ",
        "b" => "003a ",
        "B" => "004a ",
        "c" => "005a ",
        "C" => "006a ",
        "d" => "007a ",
        "D" => "008a ",
        "e" => "009a ",
        "E" => "010a ",
        "f" => "011a ",
        "F" => "012a ",
        "g" => "013a ",
        "G" => "014a ",
        "h" => "015a ",
        "H" => "016a ",
        "i" => "017a ",
        "I" => "018a ",
        "j" => "019a ",
        "J" => "020a ",
        "k" => "021a ",
        "K" => "022a ",
        "l" => "023a ",
        "L" => "024a ",
        "m" => "025a ",
        "M" => "026a ",
        "n" => "027a ",
        "N" => "028a ",
        "o" => "029a ",
        "O" => "030a ",
        "p" => "031a ",
        "P" => "032a ",
        "q" => "033a ",
        "Q" => "034a ",
        "r" => "035a ",
        "R" => "036a ",
        "s" => "037a ",
        "S" => "038a ",
        "t" => "039a ",
        "T" => "040a ",
        "u" => "041a ",
        "U" => "042a ",
        "v" => "043a ",
        "V" => "044a ",
        "w" => "045a ",
        "W" => "046a ",
        "x" => "047a ",
        "X" => "048a ",
        "y" => "049a ",
        "Y" => "050a ",
        "z" => "051a ",
        "Z" => "052a ",
        "!" => "053a ",
        "?" => "054a ",
        "," => "055a ",
        "." => "056a ",
        "_" => "057a ",
        "(" => "058a ",
        ")" => "059a ",
        "$" => "060a ",
        " " => "061a ",
        "/" => "062a ",
        "=" => "063a ",
        "#" => "064a ",
        "@" => "065a ",
        "%" => "066a ",
        "^" => "067a ",
        "&" => "068a ",
        "*" => "069a ",
        "-" => "070a ",
        "'" => "071a ",
        '"' => "072a ",
        ":" => "073a ",
        ";" => "074a ",
        "+" => "075a ",
        "×" => "076a ",
        "÷" => "077a ",
        "€" => "078a ",
        "£" => "079a ",
        "¥" => "080a ",
        "₩" => "081a ",
        "`" => "082a ",
        "~" => "083a ",
        "\\" => "084a ",
        "|" => "085a ",
        "<" => "086a ",
        ">" => "087a ",
        "{" => "088a ",
        "}" => "089a ",
        "[" => "090a ",
        "]" => "091a ",
        "▪︎" => "092a ",
        "○" => "093a ",
        "●" => "094a ",
        "□" => "095a ",
        "■" => "096a ",
        "♤" => "097a ",
        "♡" => "098a ",
        "◇" => "099a ",
        "♧" => "100a ",
        "☆" => "101a ",
        "⊙" => "102a ",
        "°" => "103a ",
        "•" => "104a ",
        "¤" => "105a ",
        "《" => "106a ",
        "》" => "107a ",
        "¡" => "108a ",
        "¿" => "109a ",
        "₽" => "110a ",
        "а" => "111a "
    ];

    $converted = '';
    // 显式指定全局编码为UTF-8,避免编码混乱
    mb_internal_encoding('UTF-8');
    $inputText = $_GET['inputText'] ?? '';
    // 替换为多字节安全的分割函数
    foreach (mb_str_split($inputText) as $val) {
        // 增加键存在判断,避免未定义字符报错
        if (isset($default[$val])) {
            $converted .= $default[$val];
        }
    }
    echo $converted;
?>

如果你的PHP版本低于7.4,没有内置mb_str_split函数,可以先在代码开头添加以下自定义兼容函数:

function mb_str_split($string, $length = 1) {
    $result = [];
    $len = mb_strlen($string);
    for ($i = 0; $i < $len; $i += $length) {
        $result[] = mb_substr($string, $i, $length);
    }
    return $result;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 05:54:01