代码之家  ›  专栏  ›  技术社区  ›  Moak

正则表达式破坏中文字符串

  •  2
  • Moak  · 技术社区  · 14 年前

    当我运行这个代码和一些类似的中文时,ni(可能是其他的)会被切碎。

    $sample = "你不喜欢 香蕉 吗";
    $parts = preg_split("/[\s,]+/", $sample);
    var_dump($parts);
    
    //outputs
    array(4) {
      [0]=>
      string(2) "�"
      [1]=>
      string(9) "不喜欢"
      [2]=>
      string(6) "香蕉"
      [3]=>
      string(3) "吗"
    }
    
    //in 我觉得 你很 麻烦
    //out
    array(4) {
      [0]=>
      string(9) "我觉得"
      [1]=>
      string(2) "�"
      [2]=>
      string(3) "很"
      [3]=>
      string(6) "麻烦"
    }
    

    我的正则表达式错了吗?

    2 回复  |  直到 12 年前
        1
  •  6
  •   Community kfsone    7 年前

    如果字符串是UTF-8格式,则必须使用 u

    $sample = "你不喜欢 香蕉 吗";
    $parts = preg_split("/[\\s,]+/u", $sample);
    var_dump($parts);
    

    如果是另一种编码,请参阅unicoraddict的 answer .

        2
  •  0
  •   codaddict    14 年前