Php utf 8 中的字符比较

Php Character comparation in utf8

我正在尝试将所有 UTF-8 字符转换为纯 ASCII 字符。我循环遍历字符串的每个字符,并根据我决定是否必须更改字符的字符。对于 ASCII 字符,它工作正常,但代码不会更改 UTF-8 字符。

这是我的函数:

    function toNoUTFChars($inputString){
    $stringArray = str_split($inputString);
    $finalString = '';
    foreach ($stringArray as $char) {
        if($char == 'ě' || $char == 'é'){$finalString .= 'e';
        }else if($char == 'š'){$finalString .= 's';
        }else if($char == 'č'){$finalString .= 'c';
        }else if($char == 'ř'){$finalString .= 'r';
        }else if($char == 'ý'){$finalString .= 'y';
        }else if($char == 'á'){$finalString .= 'a';
        }else if($char == 'í'){$finalString .= 'i';
        }else if($char == ' '){$finalString .= '-';
        }else if($char == 'ú' || $char == 'ů'){$finalString .= 'e';
        }else if($char == 'ň'){$finalString .= 'n';
        }else if($char == 'ť'){$finalString .= 't';
        }else if($char == 'ď'){$finalString .= 'd';
        }else if($char == 'ó'){$finalString .= 'o';
        }else if($char == 'ň'){$finalString .= 'n';
        }else if(ctype_alpha($char)){
            $finalString .= $char;
        }
       }
       return $finalString;
}

示例输入“使用 utf8ččč 测试 Outputěěččč”

预期输出:“Test-Outputeeeccc-with-utf8ccc”

我得到的输出:“Test-Output-with-utf8”//缺少 Utf8 字符 :(

多年来我尝试了很多东西,但这是在所有情况下对我都有效的唯一方法:

function remove_accents($txt) {
    $q = 'EOF'.mt_rand(100000000, 999999999);
    $q = "LC_CTYPE=en_US.utf8 iconv -f UTF-8 -t ASCII//TRANSLIT <<$q\n$txt\n$q";
    return substr(`$q`, 0, -1);
}

效率不高,因为它运行 iconv 二进制文件。