Aaroniker
Aaroniker

Reputation: 190

Get array with regex from string

I got an php array like this:

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

I want to convert this to different arrays - for example an array named server with "edit" and "create" in it - and another array "user" with "delete".

Whats the right pattern for that ?

Thanks for any help!

Upvotes: 0

Views: 165

Answers (1)

Gareth Parker
Gareth Parker

Reputation: 5062

Rather than trying a regex against the whole array, try matching against each individual value. Take a look at this as an example

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

Upvotes: 2

Related Questions