空格字符将转换为未知字符

| 我正在编写的模块有问题。我所拥有的是一个名称数组,具有特定的格式,可以包含字符以及空格。名称可以有两种格式:
$name[0] = \"--> Psychic Barrtier\";
$name[1] =\"    Initial Presence\";
在我的代码中,我获取了数组中的每一行,并使用preg_match语句查看它是否与这两种模式匹配。因此,我基本上是在寻找一条以两个破折号和\'> \'开头的行,然后是一个空格。或者我正在寻找以4个空格开头的行。这是我的preg_match语句:
while (preg_match(\'/^(--> |--> |--> | {4}|    |Â+)(.+)$/\', $name[$i], $capturedname))
问题是,两种类型的名称都传递了preg_match语句,但是当我遇到一个仅以4个空格开头的名称时,在变量$ capturedname中捕获的数据不匹配。基本上,我在$ caputredname [0]中捕获的内容是全部,然后$ capturedname [1]仅是空格,而$ capturedname [2]仅是名称。这是我得到的: $ capturedname [0] = \“邪恶存在\” $ capturedname [1] = \“�\” $ capturedname [2] = \“�邪恶存在\” 数组1加2应该等于数组0,但是这里不是这种情况。空格被转换为带有问号字符的菱形,并且$ capturedname [2]再次具有空格,只是不加起来。任何帮助将不胜感激。现在已经困扰我三天了。提前致谢。     
已邀请:
        我真的不认为这是转换问题。您确定输入字符串中没有任何格式/其他奇异字符吗? 我刚刚根据您的数组和模式进行了快速测试(尽管我不确定\'+ \'的含义是什么?除非您期望使用这种奇特的字符串...),否则效果很好为了我:
$name = array(
  \"--> Psychic Barrtier\",
  \"    Initial Presence\",
);
foreach ($name as $key => $value) {
  preg_match(\'/^(--> |--> |--> | {4}|    |Â+)(.+)$/\', $value, $capturedname);
  print_r($capturedname);
}
这给了我以下结果:
Array
(
    [0] => --> Psychic Barrtier
    [1] => --> 
    [2] => Psychic Barrtier
)
Array
(
    [0] =>     Initial Presence
    [1] =>     
    [2] => Initial Presence
)
所以我想首先我要检查您的输入字符串是否真的如您所期望的那样...     

要回复问题请先登录注册