我写的模块有问题。我所拥有的是一个名称数组,它具有特定的格式,可以包含字符和空格。名称可以是两种格式:
$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天了。提前谢谢。
答案 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
)
所以我想首先我会检查你的输入字符串是否真的是你期望的......