我正在尝试在字符串中使用一些特定的符号。我需要循环遍历字符串的每个字符并识别符号。 然而,某些符号被转换为三个字符。 需要帮助保留符号。
echo $instring = ("& ∨ = ⊢");
echo "\nLength of string: ".strlen($instring);
for ($i = 0; $i < strlen($instring) ; $i++){
$temp_str = substr($instring, $i,1);
echo "\nChar: $i: $temp_str";
$instring_arr[$i] = $temp_str;
}
以下是可用代码。感谢h2oooooo:
echo $instring = ("& ∨ = ⊢");
echo "\nLength of string: ".mb_strlen($instring, "UTF-8");
for ($i = 0; $i < mb_strlen($instring, "UTF-8") ; $i++){
$temp_str = mb_substr($instring, $i,1,"UTF-8");
echo "\nChar: $i: $temp_str";
$instring_arr[$i] = $temp_str;
}
substr
和strlen
基于 ASCII(每个字符被视为 1 字节 -0-255
或二进制中的00000000-11111111
)工作,而这些字符是 Unicode(每个字符可以长达 6 个字节)。请改用多字节函数mb_substr
和mb_strlen
。 - h2ooooooo