2012-12-31 26 views
-1

我有一個字符串$text_arr="101104105106109111112113114116117120122123124" 相當大串preg_match連續匹配三個數字的子串?

如果我想從他們像101,104,105$array分裂三個數字,並將其儲存。什麼應該怎麼辦?

我試着這樣做:

preg_match_all('/[0-9]{3}$/',"$text_arr",$array); 
+0

你必須從你的表情刪除$,檢查以下 –

回答

5

要做到這一點,最簡單的方法是使用preg_split()Docs

$result = preg_split('/(\d{3})/', $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); 

See it working,或者結果:

Array 
(
    [0] => 101 
    [1] => 104 
    [2] => 105 
    [3] => 106 
    [4] => 109 
    [5] => 111 
    [6] => 112 
    [7] => 113 
    [8] => 114 
    [9] => 116 
    [10] => 117 
    [11] => 120 
    [12] => 122 
    [13] => 123 
    [14] => 124 
) 
+0

我的回答這是不工作! – Aditya

+0

非常感謝!我有一個類似的陣列,我必須根據像「JimCaseyAlexShawn」這樣的資本進行分割? – Aditya

+0

@Aditya使用完全相同的路線同上,但改變正則表達式'/([AZ] [AZ] +)/' – DaveRandom

1

你必須從您的e中刪除$的結尾上的表達,這是導致返回結果只有一個

嘗試這樣

preg_match_all('/[0-9]{3}/', $text_arr, $array); 

檢查該工作here

1

選擇這個簡單的代碼

<?php 
    $string = "101104105106109111112113114116117120122123124"; 
    $parts = str_split($string, 3); 
    $res=implode(',',$parts); 
    echo($res); 
?> 
2

雖然你使用正則表達式爲此,它可能更pe rformant使用簡單,標準功能:

$groups = str_split($numbers, 3);//returns array you want 

Read all about it here

+0

我得到的結果是這樣的:陣列([0] => [1] => 101)陣列([0] =>)陣列([0] => 104)陣列([0] =>)Array([0] => 105)Array([0] =>)Array([0] =>)Array([0] => 106) ([0] => 109)Array([0] =>)Array([0] => 111)Array([0] => Array([0] =>)Array([0] =>)Array([0] =>)Array([0] =>)Array([0] =>)Array [0] => 113)陣列([0] =>)陣列([0] =>)陣列([0] =>)陣列([0] => 114)陣列([0] =>)陣列( [0] =>)陣列([0] => 116)陣列([0] => 117) – Aditya

+0

@Aditya:我不是,'str_split( '123456789123456789',3);'工作得很好。檢查您輸入的字符串,或者建立一個引擎收錄或鍵盤,所以我們可以看到你在做什麼 –

+0

沒錯其工作終於 – Aditya

相關問題