2015-06-21 81 views
3

经与正则表达式, 有点问题,我有串正则表达式阵列串问题

AM.name:ASC,AMAdvanced.start:DESC, 

AMAdvanced.start:DESC,AM.Genre:Action 

,并需要将它们打入

array(0){ 

AM.name => ASC, 

AMAdvanced.start => DESC 
} 

and 

array(0){ 

AMAdvanced.start => DESC, 

AM.Genre => Action 

} 

任何帮助将是因为全新的梦幻般的到正则表达式

+0

*我有串*单个阵列 - 哪里是必然的字符串? – splash58

+0

我试过所有的解决方案没有效果,字符串将通过JQuery和托管服务器端(与PHP)发送和每个解决方案嵌套他们不正确,字符串是分开的,并没有在同一时间处理,我需要的脚本Array([0] => Array([0] => Array([0] => AM.name [1] => ASC)[1] => Array([ 0] => AMAdvanced.start [1] => DESC))[1] => Array([0] => Array([0] => AMAdvanced.start [1] => DESC)[1] => Array ([0] => AM.Genre [1] => Action))) – B1scuit

+0

是否有4个字符串? 2串? 3个字符串(一个是空的)? – splash58

回答

2

这里不需要regex

步骤:

  1. explode用逗号,
  2. 遍历爆炸array
  3. Explode由冒号:
  4. 推向新array

代码:

$newArr = array(); 
foreach (explode(',', trim($str, " ,")) AS $el) { 
    $el = explode(':', $el); 
    $newArr[$el[0]] = $el[1]; 
} 
print_r($newArr); 
0

你可以先用新行字符分割你的文字:

var arr = data.split('\n'); 

然后循环在你的数组,并使用str.replace方法为您的项目:

var i; 
for (i = 0; i < arr.length; ++i) { 

alert(arr[i].replace(/(\w+):(\w+)/g, '$1=>$2')); 

} 

您也可以拆分每个项目的结果与,

var i; 
for (i = 0; i < arr.length; ++i) { 

var temp=arr[i].replace(/(\w+):(\w+)/g, '$1=>$2'); 
alert(temp.split(',')); 
} 
0

这将创建条目

<?php 
$dir = array(); 
$strArray = array('AM.name:ASC,AMAdvanced.start:DESC','AMAdvanced.start:DESC,AM.Genre:Action'); 
foreach ($strArray as $i => $str) { 
    $el = explode(',', $str); 
    foreach ($el as $e) { 
     $dir[$i][] = explode(':',$e); 
    } 
} 
print_r($dir);