2015-06-21 73 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);