空格字符转换为未知字符

时间:2011-06-25 05:24:16

标签: regex drupal character-encoding preg-match space

我写的模块有问题。我所拥有的是一个名称数组,它具有特定的格式,可以包含字符和空格。名称可以是两种格式:

$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]再次有空格,它只是没有加起来。任何形式的帮助将不胜感激。这已经困扰了我3天了。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我真的不认为这是转换问题。您确定输入字符串中没有任何格式/其他异国字符吗?

我刚刚根据你的数组和模式做了一个快速测试(虽然我不确定'+''是什么意思在那里做什么?除非你期望这样奇特的字符串...)并且它工作得很好对我来说:

$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
)

所以我想首先我会检查你的输入字符串是否真的是你期望的......