preg_match连续匹配三个数字的子串?

时间:2012-12-31 11:28:00

标签: php regex string preg-match expression

我有一个字符串$text_arr="101104105106109111112113114116117120122123124" 相当大的字符串

如果我想将101,104,105中的三个数字分开,并将它们存储在$array中。我该怎么办?

我试过这样做:

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

4 个答案:

答案 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
)

答案 1 :(得分:2)

虽然你 可以使用正则表达式,但可能更能使用简单的标准函数:

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

Read all about it here

答案 2 :(得分:1)

您必须从表达式中删除$ 的结尾,这导致只返回一个结果

试试这个

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

检查此工作here

答案 3 :(得分:1)

选择最简单的代码

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