【发布时间】:2014-07-15 04:28:57
【问题描述】:
我正在尝试在字符串中使用一些特定的符号。我需要遍历字符串的每个字符并识别符号。 但是,某些符号正在转换为三个字符。 需要有关如何保留符号的帮助。
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 bytes)。请改用multibyte functionsmb_substr和mb_strlen。 -
嗨 h2ooooooo,你成就了我的一天!我不知道如何“接受”/投票给你的答案。我将发布工作代码。多谢一吨。
标签: php string escaping symbols