dqg2269 2015-12-28 09:38
浏览 101
已采纳

将字符串转换为单个数组,PHP

I am working in a Laravel project. I want to convert a string into single array in efficient way.

String is $string = txn_status=0|txn_msg=success|txn_err_msg=NA|clnt_txn_ref=969239|tpsl_bank_cd=470|tpsl_txn_id=192630337|txn_amt=1.00|clnt_rqst_meta={itc:NIC~TXN0001~122333~rt14154~8 mar 2014~Payment~forpayment}{custname:test}|tpsl_txn_time=26-12-2015 15:56:20|tpsl_rfnd_id=NA|bal_amt=NA|rqst_token=hdfs-df-jkfhskjfhsjkd|hash=jhdsfs54367jhf,

And I want output look like below format. It is a json format:-

[ txn_status: "0",
  txn_msg : "success",
  txn_err_msg: "NA",
  .
  .
  .


  hash: "XYZ" ]
  • 写回答

3条回答 默认 最新

  • doukengzi3517 2015-12-28 10:35
    关注

    You could use the preg_match_all in conjunction with the array_combine like this:

    $string = "txn_status=0|txn_msg=success|txn_err_msg=NA|clnt_txn_ref=969239|tpsl_bank_cd=470|tpsl_txn_id=192630337|txn_amt=1.00|clnt_rqst_meta={itc:NIC~TXN0001~122333~rt14154~8 mar 2014~Payment~forpayment}{custname:test}|tpsl_txn_time=26-12-2015 15:56:20|tpsl_rfnd_id=NA|bal_amt=NA|rqst_token=hdfs-df-jkfhskjfhsjkd|hash=jhdsfs54367jhf";
    
    preg_match_all("/([^|]+)=([^|]+)/", $string, $array);
    
    $output = array_combine($array[1], $array[2]);
    
    echo json_encode($output, JSON_PRETTY_PRINT);
    

    http://ideone.com/eXf5K2

    Or the preg_split like this:

    $array = preg_split("/[|=]/", $string);
    $output = [];
    
    for ($i=0; $i<count($array); $i++) {
        $output[$array[$i]] = $array[++$i];
    }
    

    http://ideone.com/Y5k5bV

    Or a simplified version of @devpro's code:

    $array = explode("|", $string);
    $output = [];
    
    foreach ($array as $v) {
        list($key, $value) = explode("=", $v);
        $output[$key] = $value;
    }
    

    http://ideone.com/svrj8S

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于龙芯1b,JTAG停止调试服务
  • ¥20 收一个快手协议下单算法
  • ¥15 神途脚本逐鹿神途,管理自欺欺人
  • ¥15 求一个图片中的成交量选股公式
  • ¥15 已知正方形内随机生成坐标matlab
  • ¥30 关于#python#的问题:我想要的是这79个大特征对于房屋售价的最大的影响前十名(相关搜索:随机森林)
  • ¥15 react native新项目运行时遇到问题
  • ¥15 脚本运行Python文件,报错:error: unrecognized
  • ¥15 使用matlab计算自定义特殊函数的二重积分,改变积分顺序所得的结果不同的问题?
  • ¥15 如何正确在vs2010中初始化map对象