如何在数组中搜索值(使用正则表达式)并将搜索值推送到 PHP 中的多维数组



从这个数组中,我想用正则表达式解析括号内的值,
我使用这个模式 => [([^]]+)]

Array
(
    [0] => [DATA_1_A]
    [1] => [DATA_1_B] [DATA_2_B]
    [2] => [DATA_1_C] [DATA_2_C] [DATA_3_C]
)

并将值推送到多维数组。
喜欢这个。

Array
(
    [0] => Array
        (
            [0] => DATA_1_A
        )
    [1] => Array
        (
            [0] => DATA_1_B
            [1] => DATA_2_B
        )
    [2] => Array
        (
            [0] => DATA_1_C
            [1] => DATA_2_C
            [2] => DATA_3_C
        )
)

并使用正则表达式和array_map:

$new = array_map(function($i) {
    if(preg_match_all('/[([^]]+)]/', $i, $m)) return $m[1];
    return $i;  }, $arr);

演示

假设您的数据格式一致,您可以在没有正则表达式的情况下执行此操作。去掉第一个和最后一个括号,然后将行分开] [

$output = array();
foreach ($data as $line) {
    $line = trim($line, '[]');
    $output[] = explode('] [', $line);
}

或者使用正则表达式使用模式~b([w_d]+)b~来匹配单词字符、数字和下划线:

$output = array();
foreach ($data as $line) {
    preg_match_all('~b([w_d]+)b~', $line, $matches);
    if (!empty($matches[1])) {
        $output[] = $matches[1];
    }
}

$array; //your initial array
$output = []; //result array
foreach($array as $key => $value){
    $output[$key] = explode("] [", substr($value, 1, -1));
}

在这里,我们去掉第一个和最后一个括号,然后用"] ["拆分。

最新更新