【问题标题】:Unable to extract symbols from string无法从字符串中提取符号
【发布时间】: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;
}

【问题讨论】:

  • 这是因为 substrstrlen 在 ascii 基础上工作(每个字符被认为是 1 个字节 - 0-25500000000-11111111 二进制),并且这些字符是 unicode(每个字符可以最高可达6 bytes)。请改用multibyte functionsmb_substrmb_strlen
  • 嗨 h2ooooooo,你成就了我的一天!我不知道如何“接受”/投票给你的答案。我将发布工作代码。多谢一吨。

标签: php string escaping symbols


【解决方案1】:

我认为您可以将字符串拆分,将所有部分放在 Table(或 List 或其他任何地方)上并检查所有 Table 直到找到您的特定符号。

希望能帮到你。

【讨论】:

  • 谢谢,但我不认为它会起作用。 PHP 正在处理。某些符号,例如看起来像 v 的符号,是三个字符。字符串的长度也被报告为更高的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2011-09-10
  • 1970-01-01
  • 2011-11-04
  • 2017-12-31
  • 2021-02-28
  • 2013-05-24
相关资源
最近更新 更多