日期:2014-05-17  浏览次数:20557 次

求教字符串变数组的问题
$s="流 水 号:JH0019 状   态:处理中  等级 :高 时间: 2013-05-28 12:55:29"

如何转为数组结构为
array(
[流水号]=>JH0019
[状态]=>处理中
[等级]=>高
[时间]=>2013-05-28 12:55:29
)
我的思路是:
先把“ ”改|
再把||改|
再把:|改:
再把|:改:
但是时间中的空格和流 水 号中间的空格我就不知道怎么去掉了
最后用
$a=array();
foreach (explode('|',$s) as $s){
list($k,$v)=explode(':',$s);
$a[$k]=$v;}
我已经经改晕了,如何能搞出结果,请大家帮帮忙,谢谢

------解决方案--------------------
$s = "流 水 号:JH0019 状   态:处理中  等级 :高 时间: 2013-05-28 12:55:29";
$a = preg_split('/:\s*([ \d:-]+
------解决方案--------------------
\S+)/', $s, -1, PREG_SPLIT_DELIM_CAPTURE 
------解决方案--------------------
 PREG_SPLIT_NO_EMPTY);
foreach(array_chunk($a, 2) as $r) {
  $res[preg_replace('/\s
------解决方案--------------------
 /', '', $r[0])] = $r[1];
}

print_r($res);
Array
(
    [流水号] => JH0019
    [状态] => 处理中
    [等级] => 高
    [时间] => 2013-05-28 12:55:29
)

------解决方案--------------------

$s="流 水 号:JH0019 状   态:处理中  等级 :高 时间: 2013-05-28 12:55:29";
preg_match_all('/([^:]+):([^\s]+)/', $s, $m);
echo '<pre>';
var_dump($m);

/**
输出结果:
array(3) {
  [0]=>
  array(3) {
    [0]=>
    string(20) "流 水 号:JH0019"
    [1]=>
    string(24) " 状   态:处理中"
    [2]=>
    string(15) "  等级 :高"
  }
  [1]=>
  array(3) {
    [0]=>
    string(11) "流 水 号"
    [1]=>
    string(12) " 状   态"
    [2]=>
    string(9) "  等级 "
  }
  [2]=>
  array(3) {
    [0]=>
    string(6) "JH0019"
    [1]=>
    string(9) "处理中"
    [2]=>
    string(3) "高"
  }
}
*/