1

我正在尝试拆分 key1value1key2value2 的串联字符串问题是我不知道它们的顺序

$k = preg_split("/(name|age|sex)/", "nameJohnage27sexM");
var_dump($k);
$k = preg_split("/(sex|name|age)/", "age27sexM");
var_dump($k); 

所以我不知道年龄或名字是$k的第一个还是第二个索引,甚至不知道“name”键是否在字符串中,可以有一组有限的键

怎么做?

编辑:像这样解决,tx mario

for ($i=1, $n=count($k)-1; $i<$n; $i+=2) {
    $s[$k[$i]] = $k[$i+1];
}
var_dump($s);
4

1 回答 1

1

这个有点笨拙的模式将返回一个键值列表:

/(?:(name|age|sex)(.+?(?=(?:name|age|sex|\z))))/g

因此 preg_match 使用上面的“nameJohnage27sexM”应该返回数组

["name", "John", "age", "27", "sex", "MAN"]

这使得通过迭代上面的元素来创建数组 ["name" => "John", ...] 成为可能。

于 2012-06-04T22:31:42.600 回答