2013-04-05 58 views
2

我有一个长字符串说“123〜456 !!! 789〜012 !!! 345〜678 !!! 901〜234 !!! 567〜890 !!! 1234 〜5678" 。我已经习惯了这个字符串中的分隔符类型!!!。任何人都可以建议我一个有效的方式来爆炸(拆分)这个字符串到2d数组。 示例:将一个长字符串表示为一个2d数组PHP

$txt = "123~456!!!789~012!!!345~678!!!901~234!!!567~890!!!1234~5678". 

爆炸/分裂后的二维数组。

array[0][0] = 123 ; array[0][1] = 456 ; 
array[1][0] = 789 ; array[1][1] = 012 ; 
array[2][0] = 345 ; array[2][1] = 678 ; 
array[3][0] = 901 ; array[3][1] = 234; 
array[4][0] = 567 ; array[4][1] = 890; 
array[5][0] = 1234 ; array[5][1] = 5678; 

谢谢。 :)

回答

0

你可以使用preg_match_all()使用PREG_SET_ORDER然后映射每个项目,以消除零指数:

$txt = "123~456!!!789~012!!!345~678!!!901~234!!!567~890!!!1234~5678"; 

if (preg_match_all('/(\d+)~(\d+)/', $txt, $matches, PREG_SET_ORDER)) { 
     $res = array_map(function($item) { 
       return array_slice($item, 1); 
     }, $matches); 
     print_r($res); 
} 

另外,使用双explode()

$res = array_map(function($item) { 
    return explode('~', $item, 2); 
}, explode('!!!', $txt)); 
print_r($res); 
0
$txt = "123~456!!!789~012!!!345~678!!!901~234!!!567~890!!!1234~5678". 
$firstSplit = explode("!!!",$txt); 
$newArray = array(); 


for($i=0;$i<sizeof($firstSplit);$i++){ 
    $secondSplit = explode("~",$firstSplit[$i]); 
    for($j=0;$j<sizeof($secondSplit);$j++){ 
    $newArray[$i][] = $secondSplit[$j]; 
} 
} 

我认为somethi像这样应该工作。

0

看看preg_split()函数。

$txt = "123~456!!!789~012!!!345~678!!!901~234!!!567~890!!!1234~5678"; 
$array = preg_split ('/!!!|~/', $txt); 
print_r($array); 

Output: 
Array ([0] => 123 [1] => 456 [2] => 789 [3] => 012 [4] => 345 [5] => 678 [6] => 901 [7] => 234 [8] => 567 [9] => 890 [10] => 1234 [11] => 5678) 
相关问题