$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;}
我已经经改晕了,如何能搞出结果,请大家帮帮忙,谢谢

解决方案 »

  1.   

    $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
    )
      

  2.   


    $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) "高"
      }
    }
    */