0

所以可以说我有一个这样的字符串。

$pizza = 1,2,3,5-4,7;

我想从中得到的是5-7,但5-7可以是任何组合,比如6-9或10-1,这会发生多次。

$pizza=1-4,2,3-1,5-4,7;

那么我该怎么做呢?

我了解如何通过explode 和implode 去掉逗号,但是我不知道如何获取虚线数字以及这些数字在字符串中的位置。

4

2 回答 2

1
preg_match_all("/(\d\-\d)/", $myString, $results);

应该这样做

于 2012-04-07T22:59:03.813 回答
0

您可以使用以下方法将范围“扩展”为各自的数字:

$pizza = preg_replace_callback(
    "((\d+)-(\d+))",
    function($m) {
        return implode(",",range(min($m[1],$m[2]),max($m[1],$m[2])));
    },
    $pizza);

因此,例如,如果您输入1,2,3,7-10,12,代码将导致1,2,3,7,8,9,10,12. 然后,您可以将其放入您已知的explode代码中并获取各个数字。

我想这就是你所要求的。

于 2012-04-07T22:59:11.863 回答