所以可以说我有一个这样的字符串。
$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 去掉逗号,但是我不知道如何获取虚线数字以及这些数字在字符串中的位置。
preg_match_all("/(\d\-\d)/", $myString, $results);
应该这样做
您可以使用以下方法将范围“扩展”为各自的数字:
$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
代码中并获取各个数字。
我想这就是你所要求的。