从字符串获取带正则表达式的数组

时间:2014-11-25 00:24:26

标签: php arrays regex

我有一个像这样的php数组:

array(3) {
   [0]=> string(12) "server[edit]" 
   [1]=> string(14) "server[create]" 
   [2]=> string(12) "user[delete]" 
}

我想将其转换为不同的数组 - 例如一个名为server的数组,其中包含“edit”和“create” - 另一个数组“user”包含“delete”。

这是正确的模式吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

不是尝试对整个数组使用正则表达式,而是尝试匹配每个单独的值。看一下这个例子

$array = array(
        'server[edit]',
        'server[create]',
        'user[delete]',
        'dsadsa'
);

$newArray = array();

foreach($array as $value)
{
        preg_match("~^(\w+)\[(\w+)\]$~", $value, $matches);
        if(count($matches))
        {       
                $key = $matches[1];
                if(!isset($newArray[$key]))
                        $newArray[$key] = array();

                $newArray[$key][] = $matches[2];
        }
}

var_dump($newArray);