无法从字符串中提取符号

4

我正在尝试在字符串中使用一些特定的符号。我需要循环遍历字符串的每个字符并识别符号。 然而,某些符号被转换为三个字符。 需要帮助保留符号。

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;
}

4
这是因为 substrstrlen 基于 ASCII(每个字符被视为 1 字节 - 0-255 或二进制中的 00000000-11111111)工作,而这些字符是 Unicode(每个字符可以长达 6 个字节)。请改用多字节函数mb_substrmb_strlen - h2ooooooo
嗨h2ooooooo,你让我的一天变得美好了!我不知道如何“接受”/投票给你的答案。我将发布可行的代码。非常感谢。 - Pranav Thakkar
1个回答

0

我认为你可以将字符串分割,将所有部分放在表格(或列表或其他任何地方),并检查所有表格,直到找到特定的符号。

希望我能帮到你。


谢谢,但我不认为这会起作用。PHP把某些符号(比如那个看起来像'v'的)当做三个字符处理。字符串的长度也被报告为更高的值。 - Pranav Thakkar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接