我试图弄清楚如何拆分看起来像这样的字符串:
a20r51fx500fy3000
进入一个看起来像这样的关联数组:
array(
'a' => 20,
'r' => 51,
'fx' => 500,
'fy' => 3000,
);
我不认为我可以使用preg_split,因为这会丢弃我分裂的角色(我试过/[a-zA-Z]/
,但显然我没有做我想要的) 。我更喜欢使用某种内置功能来实现它,但如果需要,我也不介意循环。
非常感谢任何帮助!
答案 0 :(得分:4)
这样做:
$yourstring = "a20r51fx500fy3000";
$regex = '~([a-z]+)(\d+)~';
preg_match_all($regex,$yourstring,$matches,PREG_SET_ORDER);
$yourarray=array();
foreach($matches as $m) {
$yourarray[$m[1]] = $m[2];
}
print_r($yourarray);
输出:
Array ( [a] => 20 [r] => 51 [fx] => 500 [fy] => 3000 )
如果您的字符串可以包含大写字母,请通过在结束分隔符后添加i
标志来使正则表达式不区分大小写:$regex = '~([a-z]+)(\d+)~i';
<强>解释强>
([a-z]+)
捕获第1组的信件(\d+)
将数字捕获到第1组$yourarray[$m[1]] = $m[2];
在字母索引中创建,并指定数字