网站收取用户的回复短信,格式是:手机号1/日期1/流水号1/内容1/子码1 手机号2/日期2/流水号2/内容2/子码2 手机号3/日期3/流水号3/内容3/子码3 具体如:13698542355/2012-08-29 10:17:20/2451/短信内容1/00275 13568745621/2012-08-29 10:17:31/2452/短信内容2/00275如果想把这个字符串分解成一个数组,arr(array('mobile' => '13698542355','send_time'=>'2012-08-29 10:17:20','content' => '短信内容1'),array('mobile' => '13568745621','send_time'=>'22012-08-29 10:17:31','content' => '短信内容2'))怎么写比较好???请高手指教!
$t = preg_split('/\s+(?=\d{11})/', $s,-1, PREG_SPLIT_NO_EMPTY); $k=array('mobile','send_time','content');
foreach($t as $v){
$t=explode('/',$v);
$arr[]=array_combine($k,array($t[0],$t[1],$t[3]));
}
print_r($arr);
$ar = array_chunk(explode('/', $s), 4);
$k = array('mobile', 'send_time', 'content');for($i=1; $i<count($ar); $i++) {
$t = explode(' ', $ar[$i][0]);
$ar[$i-1][] = array_shift($t);
$ar[$i][0] = current($t);
$res[] = array_combine($k, array($ar[$i-1][0], $ar[$i-1][1], $ar[$i-1][3]));
}
print_r($res);
Array
(
[0] => Array
(
[mobile] => 13698542355
[send_time] => 2012-08-29 10:17:20
[content] => 短信内容1
) [1] => Array
(
[mobile] => 13568745621
[send_time] => 2012-08-29 10:17:31
[content] => 短信内容2
))代码并不是越短越好的
$num=ceil(strlen($ros)/53);
$chars=array();
for($j=0;$j<$num;$j++)
{
$chars[$j]=substr($ros,$j*53,53);
}
$rs=array();
for($i=0;$i<count($chars);$i++)
{
$rs[$i]=preg_split('/\//', $chars[$i],-1,PREG_SPLIT_NO_EMPTY );
}
print_r($rs);
然后自己知道那个位置是那个就行。