【问题标题】:How to get a char from mb_string through a for loop?如何通过 for 循环从 mb_string 获取字符?
【发布时间】:2019-03-17 17:05:52
【问题描述】:

使用此代码:

$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 中。

但是通过调试:

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

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

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

【问题讨论】:

    标签: php character-encoding char


    【解决方案1】:

    你的问题是

    $guessString[$i]
    

    索引运算符不支持多字节,因此它返回字符串的$ith 字节。解决此问题的一种方法是使用 mb_substr:

    $temp = mb_substr($guessString, $i, 1);
    

    当然,您应该在使用$guessString[$i] 的任何地方使用$temp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2022-09-25
      相关资源
      最近更新 更多