【问题标题】:PHP- Turning a String to Array with RegEx statementPHP- 使用 RegEx 语句将字符串转换为数组
【发布时间】:2021-09-04 03:20:25
【问题描述】:

我得到了这个我无法控制的字符串:

$string = '[{"val":"agent,,james,,89","number":0,"dID":0}, {"val":"house,,Villa,,389m","number":1,"dID":2}]';

只想收集val 并将它们放入一个数组中,并用两个逗号分隔

最终结果:

var_dump($resArr) // Array [{"agent", "james", "89"}, {"house", "villa", "389m"}]

到目前为止我做了什么:

$string = '[{"val":"agent,,james,,89","number":0,"dID":0}, {"val":"house,,Villa,,389m","number":1,"dID":2}]';

parse_str(stripslashes(str_replace(["'=>'","','"],['=','&'],trim($string,"'"))),$form_data);

var_dump($form_data);

【问题讨论】:

    标签: php arrays loops


    【解决方案1】:

    由于您的初始字符串是 JSON,您可以使用 json_decode() 轻松解析它。然后只需通过分隔符,, 遍历数组和explode() "val" 并将其添加到数组中。

    <?php
    
    $string = '[{"val":"agent,,james,,89","number":0,"dID":0}, {"val":"house,,Villa,,389m","number":1,"dID":2}]';
    
    $json = json_decode($string, true);
    $output = [];
    foreach($json as $elm)
    {
        $val = $elm["val"];
        $words = explode(",,", $val);
        $output[] = $words;
    }
    
    var_dump($output);
    ?>
    

    这给 $output 一个值

    [["agent", "james", "89"], ["house", "villa", "389m"]]
    

    Demo here

    【讨论】:

      【解决方案2】:

      你有一个接受的答案,但我很无聊:

      $result = array_map(function($v) {
                              return explode(',,', $v['val']);
                          }, json_decode($string, true));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-26
        • 2021-10-23
        • 2014-07-15
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 1970-01-01
        • 2018-01-29
        相关资源
        最近更新 更多