如何通过for循环从mb_string中获取字符?

时间:2019-03-17 17:05:53

标签: php character-encoding char

使用以下代码:

$guessString = 'KUĆA';
$usedLetters = ['Ć'];
$userLetter = 'Ć';

for ($i = 0; $i < mb_strlen($guessString); $i++) {
    $temp = $guessString[$i];
    if (in_array($guessString[$i], $usedLetters)) {
        echo $guessString[$i];
    } else {
        echo ' _ ';
    }
}

我正在尝试比较$ userLetter(通过GET链接发送) $ guessString中存在。

但是通过调试:

enter image description here

我终于看到它没有正确读取字符。

它得到"?"而不是"Ć"

所以我的问题是:如何通过for循环($ guessString [$ i])获得正确的字符?

1 个答案:

答案 0 :(得分:1)

您的问题在于

PT30D

索引运算符不支持多字节,因此它返回字符串的第first_names = {d["first_name"] for d in data} byte 。解决此问题的一种方法是使用mb_substr:

$guessString[$i]

当然,您应该在使用$i的任何地方使用$temp = mb_substr($guessString, $i, 1);