我尝试拆分字符串MTWTHFS
(一周中的几天)并将其存储为数组。
我已尝试str_split()
,但它也会在星期四分开T
和H
。
if(strpos($days, 'TH') !== false) {
$withth = str_replace("TH", "" ,$days);
}else{
$day = str_split($days);
print_r($day);
}
在分割之前,我还尝试先删除字符串中的TH
。
如果字符串中没有str_split()
,TH
就可以了。
这是我想要的结果:
array([0]=>'M', [1]=>'T', [2]=>'W', [3]=>'TH', [4]=>'F', [5]=>'S')
有没有更好的方法来做到这一点?
答案 0 :(得分:2)
我相信会有几种方法可以做到这一点。这是preg_split()
代码:(PHP Demo)
$days='MTWTHFS';
$split=preg_split('/.H?\K/',$days,null,PREG_SPLIT_NO_EMPTY);
var_export($split);
输出:
array (
0 => 'M',
1 => 'T',
2 => 'W',
3 => 'TH',
4 => 'F',
5 => 'S',
)
对于任何希望出于任何原因使用非正则表达式方法的人,这也是如此:
$days='MTWTHFS';
for($i=0,$k=-1,$len=strlen($days); $i<$len; ++$i){
if($days[$i]=='H'){
$split[$k].='H';
}else{
$split[++$k]=$days[$i];
}
}
似乎PHP 5.5并不像模式中的\K
。这将提供所需的结果:
$split=preg_split('/(.H?)/',$days,null,PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);