2014-11-25 71 views
0

獲取與正則表達式陣列我得到了一個PHP數組是這樣的:從字符串

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

我想將其轉換爲不同的陣列 - 例如命名服務器「編輯」,並在其「創造」一個數組 - 和另一個數組「用戶」與「刪除」。

什麼是正確的模式呢?

感謝您的幫助!

+1

您爲什麼認爲正則表達式是此工作的工具? – 2014-11-25 00:29:37

+0

是我的第一個想法,所以它可以過濾「服務器」和行動「編輯」或「創建」(但是,我不知道如何) - 是否有另一種解決方案? – Aaroniker 2014-11-25 00:31:54

+1

http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – Mihai 2014-11-25 00:32:04

回答

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); 
+0

謝謝你!我可以使用 – Aaroniker 2014-11-25 00:45:53

+0

你的'?'只適用於'\]',而反斜槓錯位。我認爲你的意思是寫'〜^(\ w +)(?:\ [(\ w +)\])?$〜' – 2014-11-25 00:51:29

+0

@LucasTrzesniewski是的,你說得對嗎?和\。我不想要?:但是,因爲我希望第二次捕獲是我插入到數組中的值。我認爲這是OP的目標是 – 2014-11-25 00:54:22