2012-08-27 142 views
-2

如何转换这种字符串转换为变量

$myvar = '[aaa](11,22,33,44,55)[bbb](1,2,3,4,5)'; 

$arr_name[1] = 'aaa'; 
$arr_val[1] = '11,22,33,44,55'; 

$arr_name[2] = 'bbb'; 
$arr_val[2] = '1,2,3,4,5'; 

我应该用什么样的功能呢?

+2

[你尝试过什么(http://www.whathaveyoutried.com) ? – Matt

+2

手动,因为这似乎不是一个公认的格式 –

+1

你是如何得到$ myvar的? –

回答

3
if(preg_match_all('/\[(.*?)\]\((.*?)\)/',$myvar,$matches)) { 
    foreach($matches[0] as $k=>$v) { 
     $arr_name[$k] = $matches[1][$k]; 
     $arr_val[$k] = $matches[2][$k]; 
    } 
} 
0

你可以尝试使用正则表达式来提取你的钥匙&变量,然后将其插入到一个数组:

$keys = array(); 
preg_match_all("/\[.+\]/", $myvar, $keys); 

$values = array(); 
preg_match_all("/\(.+\)/", $myvar, $values); 

$numKeys = count($keys); 
$numVals = count($values); 

$result = array(); 
foreach ($i = 0; $i < $numKeys; $i++) { 
    if ($i < $numVals) { 
     $result[trim($keys[$i], "[]")] = trim($values[$i], "()"); 
    } 
}